[英]pandas replace column with mean for values
I have a pandas dataframe and want replace each value with the mean for it. 我有一个pandas数据框,想要用均值替换每个值。
ID X Y
1 a 1
2 a 2
3 a 3
4 b 2
5 b 4
How do I replace Y values with mean Y for every unique X? 如何为每个唯一的X用平均值Y替换Y值?
ID X Y
1 a 2
2 a 2
3 a 2
4 b 3
5 b 3
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
For new column in another DataFrame
use map
with drop_duplicates
: 对于另一个
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
Another solution: 另一个解决方案:
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.