2016-08-10 15 views
2

のグループ化された和に等しく設定し、カラム:パンダ:次のように私はパンダのデータフレームを持っている別の列

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全体Total_Beneficiariesの合計になります列age_group_totalsを追加します。したがって、最初の2行では、値は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() 

しかし、それは間違った長さのリストを返すため動作しません。どのようにこれを1つのステップで達成するためのヒント?

答えて

1

試してみてください。

izmir_agg['agg_totals'] = izmir_agg.groupby('age_group').Total_Beneficiaries.transform('sum') 
izmir_agg 

enter image description here

関連する問題