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

Pandas 0.22.0中GroupBy按字典分组结果不符合预期问题

问题解析与解决方案

这个问题在Pandas 0.22.0版本中是因为groupby使用字典作为by参数时的行为特性导致的:当你传入的字典只包含部分索引值的映射时,未在字典键中出现的索引值会被当作独立的分组键,而不会自动归入同名的分组里。

你的原代码里,by字典只定义了'11-1001'和'11-1002'到'11-1000'的映射,但没有包含'11-1000'自身的映射。此时Pandas会把'11-1000'作为单独的分组,而'11-1001'和'11-1002'虽然映射到'11-1000',但由于原索引'11-1000'不在字典的键中,导致分组逻辑和预期不符。

解决方法

你可以通过index.map()方法生成完整的分组键序列,确保所有索引值都被正确映射:

import pandas as pd
import numpy as np

# 初始化DataFrame
kwargs = { 'index': ['11-1000', '11-1001', '11-1002'], 'data': np.random.randint(5, size=(3,2)), 'columns': ['A', 'B'] }
df = pd.DataFrame(**kwargs)

# 定义分组映射字典
by = {'11-1001': '11-1000', '11-1002': '11-1000'}

# 生成完整的分组键:对于不在字典中的索引值,保留自身作为分组键
group_keys = df.index.map(lambda idx: by.get(idx, idx))

# 执行分组并获取目标组
grouped = df.groupby(group_keys)
result = grouped.get_group('11-1000')
print(result)

这样就能得到包含'11-1000'、'11-1001'、'11-1002'三行的分组结果,完全符合预期。

补充说明

如果你的环境允许升级Pandas到0.23.0及以上版本,这个分组行为有了更直观的优化;但如果需要兼容0.22.0版本,上述的map方法是最可靠的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:38