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

如何使用Pandas重塑指定DataFrame?已尝试pd.pivot和pd.melt未果

解决方案

你需要先通过melt将A、B这类列转换为行维度,再通过pivot将Item转换为列维度,两步结合就能得到目标格式:

步骤1:构造原数据集(示例)

import pandas as pd

df = pd.DataFrame({
    'Date': [1, 1, 1],
    'Item': [1, 2, 3],
    'A': ['a1', 'a2', 'a3'],
    'B': ['b1', 'b2', 'b3']
})

步骤2:使用melt转换列维度

将A、B列拆分为Letter(存储A/B)和Value(存储对应值)两列,保留Date和Item作为标识列:

melted = df.melt(id_vars=['Date', 'Item'], var_name='Letter', value_name='Value')

此时输出的melted结构:

DateItemLetterValue
11Aa1
12Aa2
13Aa3
11Bb1
12Bb2
13Bb3

步骤3:使用pivot转换行维度

将Item列的值转为新的列,以Date和Letter作为索引,最后重置索引并重命名列:

result = melted.pivot(index=['Date', 'Letter'], columns='Item', values='Value').reset_index()
# 重命名列,匹配目标格式的"Item X"命名
result.columns = ['Date', 'Letter'] + [f'Item {col}' for col in result.columns[2:]]

最终得到的result就是你需要的格式:

DateLetterItem 1Item 2Item 3
1Aa1a2a3
1Bb1b2b3

补充说明

如果你的数据集包含多个不同的Date值,这个方法依然适用,因为pivot时已将Date纳入索引,会自动按日期分组转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:42:38