如何在Pandas中拼接DataFrame实现索引交替排列?
Pandas DataFrame索引交替拼接需求
我用Pandas创建了两个DataFrame,想要对它们做拼接操作,让两个DataFrame的索引交替排列。示例如下:
原始数据
df1
x y a 10 30 b 20 40
df2
x y a1 11 31 b1 21 41
期望输出
x y a 10 30 a1 11 31 b 20 40 b1 21 41
解决方案
方法一:构造交替索引后重排
先合并两个DataFrame,再通过zip生成交替的索引列表,最后重新索引:
import pandas as pd # 构造示例DataFrame df1 = pd.DataFrame({'x': [10, 20], 'y': [30, 40]}, index=['a', 'b']) df2 = pd.DataFrame({'x': [11, 21], 'y': [31, 41]}, index=['a1', 'b1']) # 生成交替索引 new_index = [] for i1, i2 in zip(df1.index, df2.index): new_index.extend([i1, i2]) # 合并并重排 result = pd.concat([df1, df2]).reindex(new_index) print(result)
方法二:利用索引规律排序(仅适用于索引有对应关系的场景)
如果两个DataFrame的索引是成对命名的(如a对应a1、b对应b1),可以通过提取索引前缀排序:
result = pd.concat([df1, df2]).sort_index(key=lambda idx: idx.str[:-1] if idx[-1].isdigit() else idx) print(result)
方法三:逐行交替拼接(逻辑直观)
逐行将两个DataFrame的对应行拼接起来,适合小数据集:
result_list = [] for idx1, idx2 in zip(df1.index, df2.index): result_list.append(df1.loc[[idx1]]) result_list.append(df2.loc[[idx2]]) result = pd.concat(result_list) print(result)
内容的提问来源于stack exchange,提问作者programmer_04_03
相关产品推荐
相关产品推荐

