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

如何在Pandas DataFrame中透视两列生成目标结构新表

Pandas 实现长表转宽表(透视并填充缺失值为0)

需求说明

将原始长格式DataFrame按Region分组,把Status的0、1两个取值转为独立列Status_0_count和Status_1_count,缺失的数值填充为0。

原始数据构造(可直接运行测试)

import pandas as pd

data = {
    'Region': ['East', 'East', 'West', 'West', 'South', 'North', 'North'],
    'Status': [0, 1, 0, 1, 0, 0, 1],
    'Count': [2500, 31, 1532, 25, 1200, 690, 25]
}
df = pd.DataFrame(data)

方法一:使用pivot_table(推荐,直接处理缺失值)

pivot_table可以在透视时直接指定填充缺失值的默认值,适合存在重复分组的场景:

# 透视并填充缺失值为0
df1 = df.pivot_table(
    index='Region',
    columns='Status',
    values='Count',
    fill_value=0,
    aggfunc='sum'  # 因每组唯一,sum/first效果一致
).reset_index()

# 重命名列名至目标格式
df1.columns = ['Region', 'Status_0_count', 'Status_1_count']

方法二:使用pivot后填充缺失值

如果确定每组Region+Status唯一,也可以先用pivot转换,再手动填充缺失值:

# 透视转换
df1 = df.pivot(index='Region', columns='Status', values='Count')
# 填充缺失值为0并重置索引
df1 = df1.fillna(0).reset_index()
# 重命名列名
df1.columns = ['Region', 'Status_0_count', 'Status_1_count']

最终效果

运行上述代码后,df1将完全符合目标结构,其中South区域的Status_1_count会被填充为0。

内容的提问来源于stack exchange,提问作者Vivek kanna Jayaprakash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:54:53