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

如何按特定规则将Pandas DataFrame数据重排为多列格式?

转换Pandas DataFrame为宽表格式(行:DateTime,列:TypeA/B/C)

原数据示例(创建代码)

假设你的原始DataFrame结构如下,这里给出创建示例代码:

import pandas as pd

data = {
    'DateTime': ['2024-01-01', '2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-02'],
    'Type': ['TypeA', 'TypeB', 'TypeC', 'TypeA', 'TypeB', 'TypeC'],
    'Value': [10, 20, 30, 15, 25, 35]
}
df = pd.DataFrame(data)
df['DateTime'] = pd.to_datetime(df['DateTime'])  # 确保DateTime为时间类型,可选但推荐

核心转换方法

方法1:pivot()(无重复值场景)

当每个DateTime+Type组合唯一时,用pivot实现快速转换:

# 生成宽表
wide_df = df.pivot(index='DateTime', columns='Type', values='Value').reset_index()
# 移除列层级名称(可选,让表头更简洁)
wide_df.columns.name = None

参数说明:

  • index='DateTime':指定行索引为DateTime列
  • columns='Type':将Type的唯一值(TypeA/TypeB/TypeC)作为新列名
  • values='Value':用Value列的值填充对应单元格
  • reset_index():把DateTime从索引转回普通列(若需保留索引可省略)

方法2:pivot_table()(存在重复值场景)

如果同一DateTime+Type对应多个Value,用pivot_table做聚合处理(示例用求和,可替换为mean/max等):

# 聚合重复值并转换
wide_df = df.pivot_table(
    index='DateTime',
    columns='Type',
    values='Value',
    aggfunc='sum'  # 替换为你需要的聚合函数
).reset_index()
wide_df.columns.name = None

转换后结果示例

最终的wide_df结构如下:

DateTimeTypeATypeBTypeC
2024-01-01102030
2024-01-02152535

内容的提问来源于stack exchange,提问作者Matthew David Jankowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:35:18