pandas groupby sum需要很长时间,我该如何优化呢?

时间:2017-06-08 09:15:09

标签: python pandas

我的数据框大约有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,这导致了一个问题,因为没有数字列。

1 个答案:

答案 0 :(得分:1)

为了回答你的一些问题,groupby对象只是元数据,它描述了如何执行分组,它只在你调用一些聚合函数时才有效,因为你没有数字列我通过致电sum,我不确定您的期望。

看起来你想要的只是drop_duplicates

df.drop_duplicates(subset=['country','os','device'])

所以剩下的是基于传递的subset

的非重复行