【发布时间】:2018-10-07 15:19:39
【问题描述】:
更新:
pandas df 是这样创建的:
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()
原文:
我有一个大熊猫 df,它有 270 万行和 4,000 列。除了四列之外,所有列都是 dtype uint8。 uint8 列仅包含 1 或 0 的值。我正在尝试在 df 上执行此操作:
result = df.groupby('id').max().reset_index()
可以预见的是,这个操作会立即返回一个内存错误。我最初的想法是在水平和垂直方向上分块 df。但是,这会造成混乱的情况,因为.max() 需要在所有 uint8 列上执行,而不仅仅是一对列。此外,像这样对 df 进行分块仍然非常慢。我的机器上有 32 GB 的 RAM。
什么策略可以缓解内存问题?
【问题讨论】:
标签: python pandas dataframe memory dask