私は、多くのカラムを持つ顧客注文を表すデータフレームを持っています。それらのうちの2つは 'user_id'と 'dollar'です。例えばZscore groupbyを使用してDataframeのカラムを正規化する
:
user_id dollar
0 1 0.34592 5
1 1 0.02857 7
2 1 0.26672 6
3 1 0.34592 5
4 1 0.02857 9
5 1 0.26672 10
6 1 0.34592 6
[...]
7 40 0.02857 20
8 40 0.26672 19
9 40 0.34592 8
10 40 0.02857 18
11 40 0.26672 26
私は、各ユーザの行の他の値に対するドルの値を正規化します。私は以前、たとえば次のような結果が欲しい:
user_id dollar norm_dollar
0 1 0.34592 5 -1.02774024
1 1 0.02857 7 0.07905694
2 1 0.26672 6 -0.47434165
3 1 0.34592 5 -1.02774024
4 1 0.02857 9 1.18585412
5 1 0.26672 10 1.73925271
6 1 0.34592 6 -0.47434165
[...]
7 40 0.02857 20 0.7787612
8 40 0.26672 19 0.57109154
9 40 0.34592 8 -1.71327463
10 40 0.02857 18 0.36342189
EDIT:
私はuser2のと、たとえば、それぞれの結果は、個別にではなく、全体の列の値が、各ユーザの正規化WRTになりたいそうです、 [20,19,8,18]は、meanがuser2注文の平均であるかのように正規化する必要があります。たとえば、平均は16,25であり、データフレーム列全体の平均ではありません。
私は一人のユーザーでそれを行う方法を知っている:
user1 = data.loc[data['user_id']==1]
data.loc[data['user_id']==1]['norm_dollar'] = sp.stats.mstats.zscore(user1['dollar'])
私は、すべてのユーザーのために、このようにそれを実行しようとしました:
data.dollar.div(sp.stats.mstats.zscore(data.groupby('user_id').dollar))
しかし、私はエラーを得た、あなたがいずれかを持っていますどのように進行するかについてのアイデア?
はあなたにこのようなバックへgroupby
データフレームを結合し、元の-が、私はこのようなもののためにtransform
の使用を好きになり始めていますを行うには