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

pandas多分类变量场景下长表转宽表(unpivot)实现方法咨询

解决方案

1. 长格式存储实现(优先推荐的存储结构)

你需要的行维度存储长格式本身符合标准数据结构,无需复杂转换,直接提取对应字段即可,支持任意新增分类字段扩展:

# 标准长格式:每行对应一个分组+单个日期的count数值
long_df = df[['Store', 'Season', 'Fruit', 'needed', 'date', 'count']].copy()

# 可选优化:统一字段类型减少存储占用
long_df['date'] = pd.to_datetime(long_df['date'])
long_df[['Store', 'Season', 'Fruit']] = long_df[['Store', 'Season', 'Fruit']].astype('category')

2. 转目标宽格式实现

如果需要生成日期作为列的宽表输出,使用pivot方法即可,所有需要保留的分类字段都放入index参数,天然支持多分类字段兼容:

wide_df = df.pivot(
    # 所有需要保留的分类字段都加入此列表,新增分类直接加在这里即可
    index=['Store', 'Season', 'Fruit', 'needed'],
    columns='date',
    values='count'
).reset_index()

# 可选:将列名的日期转为字符串格式,对齐你给出的示例输出
wide_df.columns = [col.strftime('%Y-%m-%d') if isinstance(col, pd.Timestamp) else col for col in wide_df.columns]
# 可选:空值填充为空字符串,和示例展示效果一致
wide_df = wide_df.fillna('')

原写法问题说明

你之前的写法只选择了Store作为分组维度,未包含Season、Fruit、needed等其他分类字段,所以会丢失字段信息,只要把所有需要保留的分类字段都加入分组维度即可实现兼容扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:09:00