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

如何按特定交替格式合并Pandas中的两个DataFrame?

解决方案

要实现这种交替排列的合并效果,核心思路是按关联键(A列和C列的对应值)分组,先放入df1的对应行,再放入df2的所有对应行,最后拼接所有分组结果即可。

具体实现代码

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
df2 = pd.DataFrame({'C': [1, 2, 2, 3, 3, 3, 4], 'D': [9, 10, 11, 12, 13, 14, 15]})

# 扩展两个DataFrame,补全缺失的列并填充NA
df1_full = df1.assign(C=pd.NA, D=pd.NA)
df2_full = df2.assign(A=pd.NA, B=pd.NA)

# 按关联值分组拼接,先放df1的行,再放df2的对应行
result_list = []
for key in df1['A'].unique():
    # 取df1中当前key的行
    part1 = df1_full[df1_full['A'] == key]
    # 取df2中当前key的所有行
    part2 = df2_full[df2_full['C'] == key]
    # 把两部分加入结果列表
    result_list.extend([part1, part2])

# 拼接所有部分并重置索引
final_df = pd.concat(result_list, ignore_index=True)
print(final_df)

代码说明

  1. 扩展DataFrame:用assign给df1添加C、D列并填充pd.NA,给df2添加A、B列并填充pd.NA,让两个df结构统一。
  2. 分组拼接:遍历df1中每个唯一的A值(也就是关联键),先取出df1中对应行,再取出df2中所有C等于该键的行,将这两部分按顺序加入结果列表。
  3. 最终拼接:用pd.concat把所有分组的结果拼接起来,ignore_index=True重置索引,得到目标表格。

运行代码后输出的结果和你需要的目标表格完全一致,缺失值显示为<NA>(对应表格中的NA)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:22:22