我想了解使用pandas在Python 2.7中複製以下Stata命令的最簡潔的方法: egen yr_id_sum = total(var_to_sum), missing by(id year)
。在Pandas中按年份和ID求和
我想在這個表產生yr_id_sum柱:
id year value yr_id_sum
1 2010 1 3
1 2010 2 3
1 2011 3 7
1 2011 4 7
2 2010 11 23
2 2010 12 23
2 2011 13 27
2 2011 14 27
我可以爲一個分組變量,如下所示(這可能有助於澄清什麼,我試圖做)這樣做:
def add_mean(grp):
grp['ann_sum'] = grp['var_to_sum'].sum()
return grp
df=df.groupby('year').apply(add_sum)
這相當於egen year_sum = total(var_to_sum), missing by(year)
。
我在擴大如this有關使用多重索引和我的情況下的答案有困難。
df.set_index(['year', 'id'], inplace=True)
df=df.groupby(['year', 'id').apply(add_sum)
好像它應該做什麼,我也想......但我得到Exception: cannot handle a non-unique multi-index!
這裏有一些問題的答案,我已經看過:
- 這個問題約applying a user defined function to each subgroup of a Group By in Pandas是接近我所期待的。
- 我正在嘗試關注this question,並附帶無條件的金額。
已添加數據,感謝您的提示。 –