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

如何转换Pandas DataFrame布局:宽表转长表并调整日期格式

Pandas宽表转长表实现方案

你可以通过Pandas的melt()方法配合日期格式调整,快速实现需求中的格式转换,以下是完整操作步骤:

1. 构造原始DataFrame(方便复现测试)

import pandas as pd

# 构建你的原始数据结构
data = {
    'FB': [10, 4, 6, 0, 0],
    'AMZN': [4, 0, 0, 0, 0],
    'AAPL': [1, 0, 0, 0, 0],
    'NFLX': [7, 0, 0, 0, 0],
    'GOOG': [0, 23, 34, 0, 0]
}
# 生成日期索引
index_dates = pd.date_range(start='2004-01-01', periods=5, freq='MS')
df = pd.DataFrame(data, index=index_dates)
df.index.name = 'date'

2. 执行格式转换

# 第一步:将索引列date转为普通数据列
df_reset = df.reset_index()

# 第二步:用melt方法转长表,指定标识列、新列名
df_long = df_reset.melt(
    id_vars='date',  # 保留的标识列
    var_name='Company',  # 原列名对应的新列名
    value_name='Score'  # 原单元格值对应的新列名
)

# 第三步:调整日期格式为DD.MM.YYYY
df_long['date'] = df_long['date'].dt.strftime('%d.%m.%Y')

# 可选:按Company排序,匹配目标输出的顺序
df_long = df_long.sort_values('Company').reset_index(drop=True)

最终输出结果

Company        date  Score
0      AAPL  01.01.2004      1
1      AAPL  01.02.2004      0
2      AAPL  01.03.2004      0
3      AAPL  01.04.2004      0
4      AAPL  01.05.2004      0
5      AMZN  01.01.2004      4
6      AMZN  01.02.2004      0
7      AMZN  01.03.2004      0
8      AMZN  01.04.2004      0
9      AMZN  01.05.2004      0
10       FB  01.01.2004     10
11       FB  01.02.2004      4
12       FB  01.03.2004      6
13       FB  01.04.2004      0
14       FB  01.05.2004      0
15     GOOG  01.01.2004      0
16     GOOG  01.02.2004     23
17     GOOG  01.03.2004     34
18     GOOG  01.04.2004      0
19     GOOG  01.05.2004      0
20     NFLX  01.01.2004      7
21     NFLX  01.02.2004      0
22     NFLX  01.03.2004      0
23     NFLX  01.04.2004      0
24     NFLX  01.05.2004      0

关键说明

  • melt()是Pandas专为宽表转长表设计的工具,参数可以精准控制转换后的列名和结构
  • dt.strftime('%d.%m.%Y')用于将默认日期格式转换为你需要的日.月.年格式
  • 排序步骤仅为匹配目标输出的顺序,若无需特定顺序可省略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:13