我有一个数据框:
- event,result
- 1, 0
- 1, 1
- -1, 1
- -1, -1
- -1, -1
现在我想按事件和结果进行汇总,以查看事件等于 3 个结果之一的次数:(-1, 0, 1)。
我已经尝试使用该groupby
功能,但不知何故我只得到所需解决方案的一半。
groupby('event').count()
方法 1 - 两列上的 Groupby
一种方法是添加一个额外的列,以便您可以对感兴趣的两列进行分组:
df.assign(cnt=1).groupby(['event','result']).count()
这将创建一个新的虚拟列,以便您可以在event
和result
列上使用 groupby 。此添加的列提供count()
要聚合的方法值。
输出是:
cnt
event result
-1 -1 2
1 1
1 0 1
1 1
方法 2 - crosstab()
另一种方法是使用 pandascrosstab()
函数:
pd.crosstab(df.event, df.result).stack()
这将为指定的两列创建一个交叉表。该stack()
方法会移动数据,以便每行有一个结果。
此命令返回一个系列:
event result
-1 -1 2
0 0
1 1
1 -1 0
0 1
1 1
dtype: int64
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句