You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分类列执行GroupBy内存占用过高的原因与解决方法咨询

现象原因

Pandas 对 Categorical 类型列执行分组时默认observed=False,会返回两个列所有分类取值的笛卡尔积全量组合,原数据中不存在的组合会被补0,导致结果行数大幅增加:你给出的示例中col1、col2各有6个分类值,笛卡尔积共生成36行结果,远多于普通数值列分组得到的6行,这是内存占用升高的核心原因。同时分组结果的Categorical列默认保留原列全量分类元数据,也会比同等长度的数值列占用更多内存。

解决方法

groupby时指定observed=True参数,即可仅返回数据中实际存在的分类组合,表现和普通数值列分组完全一致:

count2 = df2[columns].groupby(columns, observed=True).size().reset_index(name='count')

调整后得到的count2行数、内存占用都会和普通列分组的count1完全相同。


内容的提问来源于stack exchange,提问作者KimSunJoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:54:03