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

Python中如何将DataFrame单行数据转换为多行?

解决DataFrame宽表转长表的方法

假设你的原始DataFrame结构如下(对应你提供的第一个表格):

2023-07-012023-07-022023-07-03
A1101215
A2202225
B1303235
B2404245

要转换成目标长表结构,直接使用pandas的melt()方法即可,代码如下:

import pandas as pd

# 模拟原始DataFrame
df = pd.DataFrame(
    {
        "2023-07-01": [10, 20, 30, 40],
        "2023-07-02": [12, 22, 32, 42],
        "2023-07-03": [15, 25, 35, 45]
    },
    index=["A1", "A2", "B1", "B2"]
)

# 重置索引,把原来的行索引转为"指标"列
df = df.reset_index().rename(columns={"index": "指标"})

# 使用melt转换为长表
result_df = df.melt(
    id_vars=["指标"],  # 保留作为标识的列
    var_name="日期",   # 原列名转换后的新列名
    value_name="数值"  # 原数值对应的新列名
)

print(result_df)

运行后得到的结果就是你需要的表格形式:

指标日期数值
0A12023-07-0110
1A22023-07-0120
2B12023-07-0130
3B22023-07-0140
4A12023-07-0212
5A22023-07-0222
6B12023-07-0232
7B22023-07-0242
8A12023-07-0315
9A22023-07-0325
10B12023-07-0335
11B22023-07-0345

如果你的原始DataFrame的行索引不是单独的列,第一步的reset_index()是必须的,它会把原来的行标签转为普通列,之后melt就能正确识别需要保留的标识列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:37:13