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

Python中轴相同的两个Pandas DataFrame能否将对应元素合并为元组?

对应位置元素合并为元组的Pandas实现方案

有两种常用实现方式,可根据后续使用场景选择:

方案1:直接合并为元组,完全保留原有行列结构

直接使用DataFrame.combine方法即可实现需求,该方法会逐列对齐两个DataFrame的索引,将对应位置的元素拼接为元组,不会修改原有行、列的位置和标签。
示例代码:

import pandas as pd

# 构造两个轴完全一致的测试DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['x', 'y', 'z'])
df2 = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]}, index=['x', 'y', 'z'])

# 对应位置合并为元组
merged_df = df1.combine(df2, lambda col1, col2: tuple(zip(col1, col2)))

如果处理的数据量较大,可使用向量化写法提升性能:

merged_df = pd.DataFrame(
    [tuple(zip(row1, row2)) for row1, row2 in zip(df1.to_numpy(), df2.to_numpy())],
    index=df1.index,
    columns=df1.columns
)

方案2:多级列索引合并(更优通用方案)

如果不需要强制将元素存为元组,更推荐使用多级列索引的合并方案,该方案不会修改单元格的原始数据类型,后续取数、计算的性能远高于元组格式,同时完全保留原有索引、不丢失数据信息。
示例代码:

# 沿列方向拼接,用keys标记数据来源
merged_multi = pd.concat([df1, df2], axis=1, keys=['数据源1', '数据源2'])

使用时可按层级取数:

# 取第一个数据源的A列
merged_multi['数据源1']['A']
# 取x行两个数据源的B列数值
merged_multi.loc['x', (slice(None), 'B')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:24:04