Pandas分类数据groupby行为异常疑问:含缺失组合/结果长度异常
Pandas分类数据groupby行为解析
我搞不懂Pandas里分类数据的groupby行为,遇到两种特殊情况:
- 情况1:groupby操作会自动添加'A'和'B'的缺失组合
- 情况2:分组结果的长度和原DataFrame完全一致
但当'A'和'B'是整数类型时,两种情况的分组结果完全一致。
输入数据
![输入数据]
分类数据分组结果
![分类数据分组结果]
整数数据分组结果
![整数数据分组结果]
原因解析
这是因为Pandas对分类类型的groupby默认行为和数值类型存在差异:
- 分类类型默认会包含所有预定义的分类值组合(哪怕原数据里不存在这些组合),同时默认不丢弃缺失值,所以会出现“补全缺失组合”的情况。
- 整数等数值类型的
groupby只会基于数据中实际存在的取值组合分组,不会自动补充不存在的组合。
统一行为的方法
如果想让分类数据的groupby和整数类型表现一致,只需要在分组时加上observed=True参数:
df.groupby(['A', 'B'], observed=True).sum()
这个参数会强制groupby只保留原数据中实际出现过的(A,B)组合,不会补全缺失的分类组合,结果就会和整数类型的分组结果一致。
内容的提问来源于stack exchange,提问作者E.L
相关产品推荐
相关产品推荐

