我的数据框大约有200万行。如果我这样做了
df = df.groupby(by=['country','os','device'], as_index=False)
只需要很短的时间。但如果我这样做:
df = df.groupby(by=['country','os','device'], as_index=False).sum()
这需要永远,我必须杀死剧本。
这是从我从Pandas 17更新到20时开始的。
为什么会发生这种情况?如何重写它以便再次快速运行?
编辑:
nl,windows,c,awdo2323fa3rj90
uk,mac,c, awdawdoj93di303
nl,ios,m, aawd9efri403
nl,ios,m, 39fnsefwfpiw3r
[国家,操作系统,设备,md5_id] 输出应该是
nl,windows,c
uk,mac,c
nl,ios,m
与EdChum一样,groupby返回groupby对象,所以我添加了sum(),这在pandas 17中有效,但我认为现在是20,这导致了一个问题,因为没有数字列。
答案 0 :(得分:1)
为了回答你的一些问题,groupby
对象只是元数据,它描述了如何执行分组,它只在你调用一些聚合函数时才有效,因为你没有数字列我通过致电sum
,我不确定您的期望。
看起来你想要的只是drop_duplicates
:
df.drop_duplicates(subset=['country','os','device'])
所以剩下的是基于传递的subset
列