[英]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.