我有一个熊猫数据框,想用它的平均值替换每个值。
ID X Y
1 a 1
2 a 2
3 a 3
4 b 2
5 b 4
如何为每个唯一的 X 用平均 Y 替换 Y 值?
ID X Y
1 a 2
2 a 2
3 a 2
4 b 3
5 b 3
使用transform
:
df['Y'] = df.groupby('X')['Y'].transform('mean')
print (df)
ID X Y
0 1 a 2
1 2 a 2
2 3 a 2
3 4 b 3
4 5 b 3
对于另一个新柱DataFrame
使用map
具有drop_duplicates
:
df1 = pd.DataFrame({'X':['a','a','b']})
print (df1)
X
0 a
1 a
2 b
df1['Y'] = df1['X'].map(df.drop_duplicates('X').set_index('X')['Y'])
print (df1)
X Y
0 a 2
1 a 2
2 b 3
另一种解决方案:
df1['Y'] = df1['X'].map(df.groupby('X')['Y'].mean())
print (df1)
X Y
0 a 2
1 a 2
2 b 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句