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

如何使用Pandas的transpose、pivot、stack/unstack转换年周维度表格

表格转换实现方案

原始数据

|      | Public transport | Public transport.1 | Taxis | Taxis.1 |
| ---- | ---------------- | ------------------ | ----- | ------- |
| year | 2019             | 2020               | 2019  | 2020    |
| W1   | 100.0            | 91.3               | 100.0 | 102.1   |
| W2   | 91.1             | 96.6               | 98.3  | 88.3    |

目标格式

| year | week | Public transport | Taxis |
| ---- | ---- | ---------------- | ----- |
| 2019 | W1   | 100.0            | 100.0 |
|      | W2   | 91.1             | 98.3  |
| 2020 | W1   | 91.3             | 102.1 |
|      | W2   | 96.6             | 88.3  |

用Pandas实现转换(含transpose/stack/unstack操作)

直接用这些操作组合就能搞定,步骤如下:

1. 构造原始DataFrame

先把表格数据导入Pandas:

import pandas as pd

data = {
    'Public transport': ['2019', 100.0, 91.1],
    'Public transport.1': ['2020', 91.3, 96.6],
    'Taxis': ['2019', 100.0, 98.3],
    'Taxis.1': ['2020', 102.1, 88.3]
}
df = pd.DataFrame(data, index=['year', 'W1', 'W2'])

2. 转置表格(transpose)

转置后让年份和类别成为行索引,方便后续拆分:

df_t = df.T

3. 拆分列名提取年份

列名里的.1对应2020,无后缀对应2019,拆分后补全年份值:

df_t[['category', 'year']] = df_t.index.str.split('.', expand=True)
df_t['year'] = df_t['year'].fillna('2019')  # 无后缀的列默认对应2019

4. 堆叠周数(stack)

把W1、W2这两列堆叠成行,得到长格式数据:

df_stacked = df_t.set_index(['category', 'year']).stack().reset_index()
df_stacked.columns = ['category', 'year', 'week', 'value']

5. 拆堆得到宽格式(unstack)

把category列拆成目标里的两列,再处理year列的重复值:

df_final = df_stacked.set_index(['year', 'week', 'category'])['value'].unstack().reset_index()
# 把重复的year值设为空,和目标格式一致
df_final['year'] = df_final['year'].where(df_final['year'] != df_final['year'].shift(), '')

最终结果

打印df_final就会得到你要的表格格式:

| year | week | Public transport | Taxis |
| ---- | ---- | ---------------- | ----- |
| 2019 | W1   | 100.0            | 100.0 |
|      | W2   | 91.1             | 98.3  |
| 2020 | W1   | 91.3             | 102.1 |
|      | W2   | 96.6             | 88.3  |

内容的提问来源于stack exchange,提问作者Alex Günsberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:48:24