我对熊猫还很陌生,所以我想弄清楚如何使用Groupby命令。 我已经按年份,cik和boolean对数据进行了分组,现在我需要分别对每年中正确和错误的计数求和。
我已经尝试过transform.(sum)['count']
,但它会添加我所有3年的数据。
我真的很感谢任何帮助/指导。
谢谢!
df.groupby(['cik','isBase','FY'])['ext'].agg('count').head()
df['ext'] = np.where(df['isBase']== 'false', 1, 0)
df = df.groupby(['cik','isBase','FY',]['ext'].agg('count').reset_index(name='count')
df.head()
cik isBase FY count
0 1750 false 2015 78
1 1750 false 2016 73
2 1750 false 2017 62
3 1750 true 2015 328
4 1750 true 2016 306
5 1750 true 2017 305
我期望输出是这样的:
cik isBase FY count totcount
0 1750 false 2015 78 406
1 1750 false 2016 73 376
2 1750 false 2017 62 367
3 1750 true 2015 328 406
4 1750 true 2016 306 376
5 1750 true 2017 305 367
只要我能获得每年T + F的总数
答案 0 :(得分:0)
尝试
df['totcount'] = df.groupby('FY')['count'].transform(sum)
基本上,df.groupby('FY')
将具有相同年份的所有行分组,然后添加df.groupby('FY')['count']
只看count
列。现在tranform(sum)
将每年(组)转换为相应的总和。
输出:
+-----+------+--------+------+-------+----------+--+
| idx | cik | isBase | FY | count | totcount | |
+-----+------+--------+------+-------+----------+--+
| 0 | 1750 | False | 2015 | 78 | 406 | |
| 1 | 1750 | False | 2016 | 73 | 379 | |
| 2 | 1750 | False | 2017 | 62 | 367 | |
| 3 | 1750 | True | 2015 | 328 | 406 | |
| 4 | 1750 | True | 2016 | 306 | 379 | |
| 5 | 1750 | True | 2017 | 305 | 367 | |
+-----+------+--------+------+-------+----------+--+
答案 1 :(得分:0)
因此,事实证明我没有正确使用括号...做到了
df['totcount'] = df.groupby(['cik','FY']).transform(sum)['count']