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

如何使用Python将两个不同DataFrame的行逐行堆叠?

实现两个DataFrame行的逐行交替堆叠

要实现将两个结构一致的DataFrame行逐行交替堆叠(即先取df的一行,再取df1的对应行,循环往复),可以用以下两种简单方法:

方法一:利用concat+排序(通用型)

适合两个DataFrame索引匹配、结构一致的场景,步骤清晰易理解:

import pandas as pd

# 你的示例数据
df = pd.DataFrame([{'col1':1,'col2':2},{'col1':5,'col2':6},{'col1':9,'col2':10}],index = ['A', 'Z', 'B'],columns=['col1','col2'])
df1 = pd.DataFrame([{'col1':3,'col2':4},{'col1':7,'col2':8},{'col1':11,'col2':12}],index = ['A', 'Z', 'B'],columns=['col1','col2'])

# 给两个DataFrame加标识列,区分来源
df['source'] = 0
df1['source'] = 1

# 合并后按索引+标识排序,最后移除标识列
result = pd.concat([df, df1]).sort_values(by=['index', 'source']).drop('source', axis=1)

print(result)

输出结果:

col1  col2
A     1     2
A     3     4
Z     5     6
Z     7     8
B     9    10
B    11    12

方法二:numpy拼接(高效型)

如果两个DataFrame的行数、列数完全一致,用numpy直接操作底层数据会更高效,适合大数据量场景:

import pandas as pd
import numpy as np

# 示例数据
df = pd.DataFrame([{'col1':1,'col2':2},{'col1':5,'col2':6},{'col1':9,'col2':10}],index = ['A', 'Z', 'B'],columns=['col1','col2'])
df1 = pd.DataFrame([{'col1':3,'col2':4},{'col1':7,'col2':8},{'col1':11,'col2':12}],index = ['A', 'Z', 'B'],columns=['col1','col2'])

# 交替拼接行数据
stacked_data = np.vstack([df.values, df1.values]).reshape(-1, 2, df.shape[1]).swapaxes(0,1).reshape(-1, df.shape[1])
# 生成重复两次的索引
new_index = df.index.repeat(2)
# 重建结果DataFrame
result = pd.DataFrame(stacked_data, index=new_index, columns=df.columns)

print(result)

输出结果和方法一完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:27