假设您具有以下熊猫数据框(df):
A B C
0 2 1 4
1 3 4 5
2 3 1 1
3 1 4 0
4 5 0 1
并且,您想要为B列的每个不同值添加一个包含A列的平均值(或任何其他聚合函数)的列。您想保留所有列。所以结果看起来像这样(df_result):
A B C meanA_givenB
0 2 1 4 (2+3)/2
1 3 4 5 (3+1)/2
2 3 1 1 (2+3)/2
3 1 4 0 (3+1)/2
4 5 0 1 5 /1
我这样做的方式如下:
import pandas as pd
meanA_givenB = df.groupby('B').A.mean()
df_result = pd.merge(df, pd.DataFrame(meanA_givenB),
how='left', left_on='A', right_index=True,
suffixes=['','_meanA_givenB'])
必须有一种更清洁,更有效的方法来执行此操作。
您可以使用transform
:
>>> df['avg(A)|B'] = df.groupby('B')['A'].transform('mean')
>>> df
A B C avg(A)|B
0 2 1 4 2.5
1 3 4 5 2.0
2 3 1 1 2.5
3 1 4 0 2.0
4 5 0 1 5.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句