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

如何使用Python Pandas将同名列堆叠为多行表格结构?

Python实现重复列名表格的堆叠合并

你可以用Pandas库的pd.wide_to_long()函数来实现这个需求,它专门用于将宽格式表格转换为长格式,尤其适合处理带有重复列名的场景。以下是具体实现步骤:

1. 构建原始DataFrame

首先把你提供的表格转换成Pandas的DataFrame:

import pandas as pd

# 原始表格数据
df = pd.DataFrame(
    [[123, 1, 6, 7, 3], [456, 2, 8, 9, 7]],
    columns=['id', 'a', 'b', 'a', 'b']
)

2. 使用pd.wide_to_long()处理

这个函数会自动识别重复的列名(a和b),将它们堆叠成多行,并保留id作为标识列:

# 转换表格,stubnames指定要堆叠的重复列名,i指定标识列,j是临时分组列
result = pd.wide_to_long(df, stubnames=['a', 'b'], i='id', j='temp', suffix='.*')

# 重置索引并移除临时分组列
result = result.reset_index(drop=False).drop('temp', axis=1)

# 按id排序(可选,保证结果顺序和示例一致)
result = result.sort_values('id').reset_index(drop=True)

3. 最终结果

运行后得到的result就是你需要的表格结构:

idab
12316
12373
45628
45697

备选方法:使用melt()+透视表

如果需要更灵活的处理,也可以结合melt()和透视表实现:

# 先给重复列名添加分组后缀
df.columns = ['id', 'a_1', 'b_1', 'a_2', 'b_2']

# 转换为长格式
melted = df.melt(id_vars='id', var_name='col_group', value_name='value')

# 拆分列名得到原始列名和分组号
melted[['col', 'group']] = melted['col_group'].str.split('_', expand=True)

# 透视回宽格式并整理
result = melted.pivot_table(
    index=['id', 'group'], 
    columns='col', 
    values='value', 
    aggfunc='first'
).reset_index(drop=False).drop('group', axis=1)

result = result.sort_values('id').reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:45:54