【发布时间】:2016-12-16 14:57:56
【问题描述】:
我有一个熊猫数据框如下:
variable Total_Beneficiaries gender_text age_group
0 MC_OLD_18>F>5 1534 Female 5 - 18
1 MC_OLD_18>M>5 1651 Male 5 - 18
2 MC_OLD_F>0<=1 192 Female 0 - 1
3 MC_OLD_F>18 2079 Female 18 - 60
4 MC_OLD_F>=60 171 Female Over 60
5 MC_OLD_F_Child<5 593 Female 1 - 5
6 MC_OLD_M>0<=1 264 Male 0 - 1
7 MC_OLD_M>18 1892 Male 18 - 60
8 MC_OLD_M>=60 106 Male Over 60
9 MC_OLD_M_Child<5 602 Male 1 - 5
我想添加一个列age_group_totals,它将是每个age group 中Total_Beneficiaries 的总和。所以前两行的值是3185。
到目前为止,我一直在通过创建一个带有总和的新数据框并按如下方式合并回原始数据框来做到这一点:
total_by_age = izmir_agg[['age_group','Total_Beneficiaries']].groupby('age_group').agg({'Total_Beneficiaries':np.sum}).reset_index().rename(columns={'Total_Beneficiaries':'age_group_totals'})
izmir_agg = izmir_agg.merge(total_by_age,how='left',on='age_group')
这看起来很笨拙,我想知道是否有一种方法可以更直接地添加此列,而无需创建单独的数据框。我试过这个:
izmir_agg['age_group_totals'] = izmir_agg.groupby('age_group')['Total_Beneficiaries'].sum().tolist()
但它不起作用,因为它返回一个长度错误的列表。有关如何一步完成此操作的任何提示?
【问题讨论】: