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

如何将宽格式DataFrame转换为含Indicator与Value列的结构?

解决方案

用pandas内置的melt()方法可以高效完成这种宽表转长表的格式转换,比手动写for循环更简洁且不易出错,具体步骤如下:

1. 构造原始DataFrame

import pandas as pd

# 按你的数据构造原始DataFrame
data = {
    'Column A': [1, 2, 3],
    'Column B': ['value 1', 'value 4', 'value 7'],
    'Column C': ['value 2', 'value 5', 'value 8'],
    'Column D': ['value 3', 'value 6', 'value 9']
}
df = pd.DataFrame(data)

2. 使用melt()转换格式

melt()方法可以指定保留的标识符列,将其余列转换为"指标-值"的配对结构:

# 执行格式转换
melted_df = df.melt(
    id_vars='Column A',          # 保留作为分组标识的列
    value_vars=['Column B', 'Column C', 'Column D'],  # 需要转换的列
    var_name='Indicator',        # 新的指标列名称
    value_name='Value'           # 新的值列名称
)

# 将原始列名替换为目标描述文字
indicator_map = {
    'Column B': 'descriptionB',
    'Column C': 'descriptionC',
    'Column D': 'descriptionD'
}
melted_df['Indicator'] = melted_df['Indicator'].map(indicator_map)

3. 最终结果

执行后得到的melted_df即为你需要的格式:

Column AIndicatorValue
1descriptionBvalue 1
2descriptionBvalue 4
3descriptionBvalue 7
1descriptionCvalue 2
2descriptionCvalue 5
3descriptionCvalue 8
1descriptionDvalue 3
2descriptionDvalue 6
3descriptionDvalue 9

(注:你提供的示例中存在拼写错误descirptionB,这里统一使用正确的descriptionB)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:45:57