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

如何将两个同索引DataFrame的对应列成对合并排列?

解决方案

核心思路

先提取两组列的「基础名称」(比如从Actual Col A中提取Col A),再按「Actual列 + 对应Target列」的成对规则重构列顺序,最后用新顺序重排DataFrame即可。

具体实现代码

import pandas as pd

# 读取数据(保留原有读取逻辑)
actuals = pd.read_excel('PDS Monthly')
targets = pd.read_excel('Targets')

# 合并DataFrame(替代原merge写法,索引一致时横向拼接更高效直观)
result = pd.concat([actuals, targets], axis=1)

# 步骤1:提取基础列名(从Actuals的列中移除前缀"Actual ")
base_names = [col.replace("Actual ", "") for col in actuals.columns]

# 步骤2:构建成对的列顺序
new_col_order = []
for name in base_names:
    new_col_order.append(f"Actual {name}")
    new_col_order.append(f"Target {name}")

# 步骤3:按新顺序重排列
result = result[new_col_order]

print(result)

补充说明

  1. 合并方式优化:原代码的merge+reset_index可以替换为pd.concat,因为两个DataFrame索引一致,横向拼接更直接高效,结果完全相同。
  2. 简洁写法适配:如果targets的列顺序和actuals完全对应(即actuals.columns[0]对应targets.columns[0]),可以用一行代码生成列顺序:
    new_col_order = [item for pair in zip(actuals.columns, targets.columns) for item in pair]
    
    但如果列顺序可能不匹配,优先用「提取基础名称」的方法,确保配对绝对准确。
  3. 大规模列适配:上述逻辑完全支持45列的场景,无需修改代码,循环会自动遍历所有列完成成对排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:13:19