[英]Pandas groupby and count across multiple columns
我有按 ID、Year 排序的數據,然后是一系列事件標志,指示在那一年該 ID 是否發生了某件事:
ID | 年 | X | 是 | z |
---|---|---|---|---|
1 | 2015年 | 0 | 1 | 0 |
1 | 2016年 | 1 | 1 | 0 |
1 | 2017年 | 0 | 1 | 1 |
2 | 2015年 | 1 | 0 | 1 |
2 | 2016年 | 1 | 1 | 0 |
2 | 2017年 | 0 | 1 | 1 |
我想按 ID 和 Year 分組,並對每個“事件”列應用累積計數,這樣我就會得到如下內容
ID | 年 | x_total | y_total | z_total |
---|---|---|---|---|
1 | 2015年 | 0 | 1 | 0 |
1 | 2016年 | 1 | 2 | 0 |
1 | 2017年 | 1 | 3 | 1 |
2 | 2015年 | 1 | 0 | 1 |
2 | 2016年 | 2 | 1 | 1 |
2 | 2017年 | 2 | 2 | 2 |
我已經使用cumsum
和cumcount
查看了各種選項,但我似乎無法弄清楚這一點。
您可以使用.groupby()
+ .cumsum()
來獲取每個“事件”列的累積計數。 然后通過.add_suffix()
將_total
作為后綴添加到列名,然后加入前兩列:
df[['ID', 'Year']].join(df.groupby('ID')[['x', 'y', 'z']].cumsum().add_suffix('_total'))
結果:
ID Year x_total y_total z_total
0 1 2015 0 1 0
1 1 2016 1 2 0
2 1 2017 1 3 1
3 2 2015 1 0 1
4 2 2016 2 1 1
5 2 2017 2 2 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.