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

如何在Python中实现满足指定结果的DataFrame非常规合并?

解决方案

可以通过给两个DataFrame添加组内序号,再基于id和序号做外连接来实现需求,这种方法无需后续删除操作,适合处理大规模数据。

步骤说明

  1. 为每个DataFrame按id分组,生成组内的连续序号(从0开始),用来区分同一id下的不同行;
  2. 以id和序号作为连接键,执行外连接(outer join);
  3. 最后移除辅助的序号列即可得到目标结果。

代码实现

import pandas as pd

# 构造示例数据
df_a = pd.DataFrame({'id': [1, 2, 3], 'x': [123, 456, 789]})
df_b = pd.DataFrame({'id': [1, 3, 3], 'y': [4, 5, 6]})

# 添加组内序号
df_a['seq'] = df_a.groupby('id').cumcount()
df_b['seq'] = df_b.groupby('id').cumcount()

# 外连接并移除序号列
result = pd.merge(df_a, df_b, on=['id', 'seq'], how='outer').drop('seq', axis=1)

# 查看结果
print(result)

输出结果

id      x    y
0   1  123.0  4.0
1   2  456.0  NaN
2   3  789.0  5.0
3   3    NaN  6.0

这个方法的核心是用组内序号匹配同一id下的对应行,外连接会自动保留所有行,且仅匹配同序号的行,自然生成需要的空值,完全不需要额外的删除或修正操作,处理大数据量时效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:05:31