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

如何用Python Pandas转换指定DataFrame?已试方法均报错求帮助

Pandas DataFrame 转换实现方案

先模拟你的原数据结构(根据转换目标反推):

import pandas as pd

# 模拟原宽表数据
df = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-02'],
    'A Value': [10, 20],
    'A Comment': ['Good', 'Better'],
    'B Value': [30, 40],
    'B Comment': ['OK', 'Great'],
    'C Value': [50, 60],
    'C Comment': ['Fine', 'Excellent']
})

按照以下步骤转换即可:

  1. 用pd.melt将宽表转成基础长表,保留Date作为标识列:
melted_df = df.melt(id_vars='Date', var_name='Indicator_Type', value_name='Content')
  1. 拆分Indicator_Type列,分离出指标名称(A/B/C)和数据类型(Value/Comment):
melted_df[['Indicator', 'Type']] = melted_df['Indicator_Type'].str.split(' ', expand=True)

如果你的列名是下划线分隔(比如A_Value),把分隔符改成'_'即可

  1. 用pivot将类型列转成目标列,再重置索引:
transformed_df = melted_df.pivot(index=['Date', 'Indicator'], columns='Type', values='Content').reset_index()
  1. 清理索引名并调整列顺序:
transformed_df.columns.name = None
transformed_df = transformed_df[['Date', 'Indicator', 'Value', 'Comment']]

最终得到的transformed_df就是你需要的结构:

Date Indicator Value    Comment
0  2023-01-01         A    10       Good
1  2023-01-01         B    30         OK
2  2023-01-01         C    50       Fine
3  2023-01-02         A    20     Better
4  2023-01-02         B    40      Great
5  2023-01-02         C    60  Excellent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:05