[英]pandas replace column with mean for values
我有一个pandas数据框,想要用均值替换每个值。
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
新列, DataFrame
使用带有drop_duplicates
map
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.