为什么速度差异让大熊猫获得群体

时间:2016-07-17 17:12:36

标签: performance pandas group-by

为什么这三种方法在pandas中从32m行数据帧中获取组的性能存在差异。

df = df.groupby(["a", "b", "c"]).groups

df = df.groupby(["a", "b", "c"]).count()
df = df.index

df = df.groupby(["a", "b", "c"]).count()
df = df.drop(df.columns, axis=1).reset_index()

最后一种方法需要< 10秒我放弃了等待另外两个。

编辑:添加了错过的方括号。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将sort=False添加到groupby(同时添加[]):

df = df.groupby(["a", "b", "c"], sort=False).groups

文档:

  

排序:布尔值,默认为True

     

对组键进行排序。关闭它可以获得更好的性能。请注意,这不会影响每组内观察的顺序。 groupby保留每个组中行的顺序

另一种解决方案是使用dask

  

巧妙的可并行化操作(快速):

     

groupby-aggregate(使用常见聚合):

     

<强> df.groupby(df.x).y.max()
  的 df.groupby( 'X')。MAX()