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

如何在Pandas中重塑DataFrame:将宽格式转为长格式结构

Pandas DataFrame 宽表转长表并提取角度信息

原DataFrame结构:

import pandas as pd

# 构建示例数据
data = {
    'Candidate': ['10006A', '10008A'],
    'z0, 0deg': [0.30, 0.30],
    'z0, 30deg': [0.05, 0.30],
    'z0, 60deg': [0.05, 0.30],
    'z0, 90deg': [0.05, 0.30],
    'z0, 120deg': [0.05, 0.30],
    'z0, 150deg': [0.30, 0.30],
    'z0, 180deg': [0.05, 0.30],
    'z0, 210deg': [0.05, 0.05],
    'z0, 240deg': [0.05, 0.05]
}
df = pd.DataFrame(data)

输出的原表:

Candidate  z0, 0deg  z0, 30deg  z0, 60deg  z0, 90deg  z0, 120deg  z0, 150deg  z0, 180deg  z0, 210deg  z0, 240deg
0    10006A      0.30       0.05       0.05       0.05        0.05        0.30        0.05        0.05        0.05
1    10008A      0.30       0.30       0.30       0.30        0.30        0.30        0.30        0.05        0.05

目标结构:

Candidate  angle    z0
0    10006A      0  0.30
1    10006A     30  0.05
2    10006A     60  0.05
3    10006A     90  0.05
4    10006A    120  0.05
5    10006A    150  0.30
6    10006A    180  0.05
7    10006A    210  0.05
8    10006A    240  0.05
9    10008A      0  0.30
...

实现步骤:

  • 使用pd.melt()将宽表转为长表,保留Candidate作为标识列
  • 从原列名字符串中提取角度数值,转换为整数类型
  • 移除临时列,调整列顺序,最后按Candidate和angle排序

完整代码:

# 1. 宽表转长表
melted_df = df.melt(id_vars='Candidate', var_name='angle_col', value_name='z0')

# 2. 提取角度数值:从"z0, Xdeg"中提取X,转为整数
melted_df['angle'] = melted_df['angle_col'].str.extract(r'(\d+)').astype(int)

# 3. 移除临时列,调整列顺序,按要求排序
result_df = melted_df.drop('angle_col', axis=1)[['Candidate', 'angle', 'z0']]
result_df = result_df.sort_values(by=['Candidate', 'angle']).reset_index(drop=True)

print(result_df)

输出结果:

Candidate  angle    z0
0     10006A      0  0.30
1     10006A     30  0.05
2     10006A     60  0.05
3     10006A     90  0.05
4     10006A    120  0.05
5     10006A    150  0.30
6     10006A    180  0.05
7     10006A    210  0.05
8     10006A    240  0.05
9     10008A      0  0.30
10    10008A     30  0.30
11    10008A     60  0.30
12    10008A     90  0.30
13    10008A    120  0.30
14    10008A    150  0.30
15    10008A    180  0.30
16    10008A    210  0.05
17    10008A    240  0.05

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:28