我有以下数据框:
Age Sex
10 M
20 M
30 F
15 F
我想要一个包含每个性别的平均年龄的数据框。那就是:
Age Sex Average
10 M 15
20 M 15
30 F 22.5
15 F 22.5
但我做的是:
average = dataframe.groupby('Sex').mean()
然后我会使用join函数。尽管如此,数据帧 不包括性别作为一个列,所以我不能合并它。
答案 0 :(得分:1)
尝试使用:
average = dataframe.groupby('Sex', as_index=False).mean()
设置as_index=False
将Sex
作为结果数据框中的列。
答案 1 :(得分:1)
无需执行合并,请使用transform
:
dataframe['Average'] = dataframe.groupby('Sex').transform('mean')
通常,如果希望组级聚合与原始DataFrame具有相同的形状,请使用transform
。
结果输出:
Age Sex Average
0 10 M 15.0
1 20 M 15.0
2 30 F 22.5
3 15 F 22.5