我有一个包含 380 万行和一列的 pandas.DataFrame,我正在尝试按索引对它们进行分组。
索引是客户ID。我想按索引对 qty_liter
进行分组:
df = df.groupby(df.index).sum()
但是完成计算需要很长时间。有没有其他方法可以处理非常大的数据集?
这是df.info()
:
<class 'pandas.core.frame.DataFrame'>
Index: 3842595 entries, -2147153165 to \N
Data columns (total 1 columns):
qty_liter object
dtypes: object(1)
memory usage: 58.6+ MB
数据如下所示:
最佳答案
问题是您的数据不是数字。处理字符串比处理数字花费的时间长得多。先试试这个:
df.index = df.index.astype(int)
df.qty_liter = df.qty_liter.astype(float)
然后再次执行 groupby()
。它应该快得多。如果是,请查看是否可以修改数据加载步骤以从一开始就拥有正确的数据类型。
关于python - Pandas:df.groupby() 对于大数据集来说太慢了。任何替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704465/