更新:
pandas数据框是这样创建的:
df = pd.read_sql(query, engine)
encoded = pd.get_dummies(df, columns=['account'])
从这个 df 创建一个 dask df 看起来像这样:
df = dd.from_pandas(encoded, 50)
使用dask执行操作时,没有任何可见的进展(使用dask诊断进行检查):
result = df.groupby('journal_entry').max().reset_index().compute()
翻译结果:
我有一个包含2.7M行和4,000列的大型pandas df。除了四个列以外,所有的列都是uint8类型。uint8列只包含值1或0。我试图对df执行以下操作:
result = df.groupby('id').max().reset_index()
可预见的是,此操作会立即返回一个内存错误。我的初始想法是将df水平和垂直地分块。然而,这会创建一个混乱的情况,因为
.max()
需要在所有uint8列上执行,而不仅仅是一对列。此外,像这样分块df仍然非常缓慢。我的机器上有32 GB的RAM。
有什么策略可以缓解内存问题吗?