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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:35:24