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

如何基于MultiIndex列扩展pandas DataFrame为宽表格式?

将MultiIndex分组结果转为宽格式(缺失值补0)

你可以通过unstack()方法直接将MultiIndex的分组结果转换为宽格式,同时填充缺失值为0,再调整列名即可得到目标结构:

原代码与输出

你当前通过分组得到的带MultiIndex的结果:

new_data = data.groupby(['id','category']).sum('amount')

输出结构示例:

amount
id category
1   2           12
    3           1
2   1           45
    3           56

解决方案代码

# 展开category为列,同时填充缺失值为0
wide_data = new_data.unstack(level='category', fill_value=0)
# 重命名列,添加指定前缀
wide_data.columns = [f'amount_category_{col}' for col in wide_data.columns.get_level_values(1)]
# 将id从索引转为普通列(按需选择,若需要id作为列则执行)
wide_data = wide_data.reset_index()

代码说明

  1. unstack(level='category', fill_value=0):将category层级的索引直接展开为列,fill_value=0参数一次性把缺失的category对应的数值填充为0,无需后续单独处理空值
  2. 列名重命名:unstack后列名是包含amount和category的MultiIndex,通过columns.get_level_values(1)提取category的数值,拼接成amount_category_xx格式的列名
  3. reset_index():如果需要把id从索引转为普通列(和目标表格结构一致),执行此步骤;若保留id作为索引则可省略

运行后得到的结果结构如下:

id  amount_category_1  amount_category_2  amount_category_3
1   0                  12                 1
2   45                 0                  56

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:35:26