我有以下数据框:
df = pd.DataFrame([
(1, 1, 'term1'),
(1, 2, 'term2'),
(1, 1, 'term1'),
(1, 1, 'term2'),
(2, 2, 'term3'),
(2, 3, 'term1'),
(2, 2, 'term1')
], columns=['id', 'group', 'term'])
我想按id
和group
对它进行分组,并计算这个id组对的每个项的数目。
最后我会得到这样的结果:
我可以通过使用df.iterrows()
循环遍历所有行并创建一个新的数据帧来实现我想要的目标,但这显然是低效的。(如果有帮助的话,我事先知道所有条款的清单,其中大约有10个)。
看起来我必须先按分组,然后再计算值,所以我尝试用df.groupby(['id', 'group']).value_counts()
进行分组,但该方法不起作用,因为value_counts操作的是group by系列,而不是数据帧。
不管怎样,我不需要循环就可以做到这一点?
我用
groupby
和size
时机
1000000行
使用pivot_table()方法:
针对700K行DF的计时:
针对7M排DF的计时:
与其记住冗长的解决方案,不如看看熊猫为您构建的解决方案:
相关问题 更多 >
编程相关推荐