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

如何将Pandas DataFrame pivot为行数等于最大类别长度的结构?

实现方案

核心思路是给每个类别下的行生成组内序号,再通过pivot实现按序填充的宽表,具体步骤如下:

  1. 构造示例数据(可替换为你的实际DataFrame)
import pandas as pd

data = {
    'catYM': ['202301', '202301', '202302', '202302', '202302', '202303'],
    'prod': [100, 200, 150, 250, 300, 50]
}
df = pd.DataFrame(data)
  1. 生成组内行号
    给每个catYM分组,用cumcount()生成组内从0开始的序号,标记每个类别下每行的位置:
df['row_id'] = df.groupby('catYM').cumcount()
  1. 执行pivot重塑
    以组内行号为索引,catYM为列,prod为值做pivot,最终行数会自动匹配所有类别中的最大行数,每个类别下的数值按顺序填充:
result_df = df.pivot(index='row_id', columns='catYM', values='prod').reset_index(drop=True)

最终输出结果:

catYM  202301  202302  202303
0       100.0   150.0    50.0
1       200.0   250.0     NaN
2         NaN   300.0     NaN

如果需要把NaN替换为特定值(比如0),可追加:

result_df = result_df.fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:18:10