熊猫表计算

时间:2019-05-28 17:07:23

标签: python pandas group-by

我有一张桌子,如下:

+-------+-------+-------------+
| Code  | Event | No. of runs |
+-------+-------+-------------+
|    66 |     1 |             |
|    66 |     1 |           2 |
|    66 |     2 |             |
|    66 |     2 |             |
|    66 |     2 |           3 |
|    66 |     3 |             |
|    66 |     3 |             |
|    66 |     3 |             |
|    66 |     3 |             |
|    66 |     3 |           5 |
|    70 |     1 |             |
|    70 |     1 |             |
|    70 |     1 |             |
|    70 |     1 |           4 |
+-------+-------+-------------+

让我们将每一行称为一次运行。我要数一数。每个Event中的运行次数,分别针对每个Code。我需要使用groupby函数吗?我已在No. of runs列中添加了预期的输出。

1 个答案:

答案 0 :(得分:3)

尝试将groupbytransfrom一起使用,然后mask重复行:

df['Runs'] = df.groupby(['Code', 'Event'])['Event']\
               .transform('count')\
               .mask(df.duplicated(['Code','Event'], keep='last'), '')

输出(将新列添加到输出数据框,以与所需结果进行比较):

    Code     Event    No. of runs Runs
0      66      1                    
1      66      1             2     2
2      66      2                    
3      66      2                    
4      66      2             3     3
5      66      3                    
6      66      3                    
7      66      3                    
8      66      3                    
9      66      3             5     5
10     70      1                    
11     70      1                    
12     70      1                    
13     70      1             4     4