あなたが何をしたいのかがtransform
です。
col1 col2 target
0 A D 1
1 A A 0
2 A E 0
3 B A 0
4 A C 0
5 A D 1
6 B E 0
7 A C 0
8 B C 0
9 B B 0
あなたがようgroupby
を使用して変換を得ることができます...次を見てみましょう:...
df.groupby('col1').transform(np.mean)
target
0 0.333333
1 0.333333
2 0.333333
3 0.000000
4 0.333333
5 0.333333
6 0.000000
7 0.333333
8 0.000000
9 0.000000
今、あなただけ変換する一連の情報を必要とする
df.groupby('col1').transform(np.mean)['target']
0 0.333333
1 0.333333
2 0.333333
3 0.000000
4 0.333333
5 0.333333
6 0.000000
7 0.333333
8 0.000000
9 0.000000
pd.Series
は、いくつかの異なる方法で因子に変換することができます。 1つの方法はpd.factorize()
を使用することです。
pd.factorize(df.groupby('col1').transform(np.mean)['target'])
(array([0, 0, 0, 1, 0, 0, 1, 0, 1, 1]),
Float64Index([0.333333333333, 0.0], dtype='float64'))
いるのはあなただけ織り込ん値を探しています:
pd.factorize(df.groupby('col1').transform(np.mean)['target'])[0]
array([0, 0, 0, 1, 0, 0, 1, 0, 1, 1])
は今、ちょうどそれをお好み:)の列名を割り当てます。
希望します。
出典
2016-05-30 01:12:26
ssm