【发布时间】:2020-03-11 08:40:48
【问题描述】:
我有大小为(607875, 12294) 的熊猫数据框。数据稀疏,看起来像:
ID BB CC DD ...
0 abc 0 0 1 ...
1 bcd 0 0 0 ...
2 abc 0 0 1 ...
...
我通过调用将其转换为稀疏形式
dataframe = dataframe.to_sparse()
后来,我将其按ID 和sum 分组,并将行值按
dataframe = dataframe.groupby("ID").sum()
对于较小的数据帧,它工作得很好,但是对于这个大小,它工作了一个小时并没有完成工作。
有没有办法加快或绕过它?有没有其他我可以使用的稀疏方法,因为to_sparse 方法已被弃用。
输出数据框的大小为(2000, 12294),看起来像(如果abc 列中没有其他1):
ID BB CC DD ...
0 abc 0 0 2 ...
1 bcd 0 0 0 ...
...
我的电脑上有 32 GB 的 RAM,所以应该足够了。
【问题讨论】:
-
您可以添加示例输出数据框吗? @玛丽亚
-
我建议融化,但我认为 DF 可能太大而无法放入内存。也许你可以看看
dask? -
@Vishnudev,是的,当然。我编辑了问题。
-
嗯...,我真的不习惯稀疏数据,但我可以想象 numpy 如何有效地对稀疏矩阵进行操作。但我无法想象稀疏数据帧上的
groupby是如何高效的。可以选择在密集版本上应用groupby吗? -
你可能想探索dask
标签: python pandas group-by sparse-dataframe