如何在Pandas中将两对列拼接为行交替的两列?
Pandas实现DataFrame列组交替行拼接
问题描述
现有如下DataFrame,需要将第1、2列与第3、4列进行拼接,使结果呈现行交替的形式:
import pandas as pd df = pd.DataFrame({'1': ['A1', 'A2', 'A3', 'A4'], '2': [5, 10, 15, 15], '3': ['B1', 'B2', 'B3', 'B4'], '4': [3, 1, 5, 9]})
原数据:
1 2 3 4 0 A1 5 B1 3 1 A2 10 B2 1 2 A3 15 B3 5 3 A4 15 B4 9
期望结果:
col1 col2 A1 5 B1 3 A2 10 B2 1 A3 15 B3 5 A4 15 B4 9
解决方案
可以通过拆分列组、统一列名后按索引排序实现交替行效果:
# 拆分出两组目标列 df_group1 = df[['1', '2']] df_group2 = df[['3', '4']] # 统一两组的列名,避免合并后列结构混乱 df_group2.columns = df_group1.columns # 拼接两组数据并按原索引排序,实现"A组行→B组行"的交替效果 result = pd.concat([df_group1, df_group2]).sort_index(kind='mergesort') # 可选:重命名列名让结果更直观 result.columns = ['col1', 'col2'] print(result)
代码说明
- 拆分列组:分别提取第1-2列和第3-4列作为独立的DataFrame
- 统一列名:确保两组数据列名一致,保证合并后列结构统一
- 拼接并排序索引:
pd.concat保留原索引,排序后同一索引的行相邻,自然形成交替行结构 - 重命名列:可选操作,让结果列名更清晰易懂
运行后即可得到符合期望的交替行结构。
内容的提问来源于stack exchange,提问作者Noah_Seagull
相关产品推荐
相关产品推荐

