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

如何基于A列并集合并两个DataFrame并填充对应列数据?

解决方案:基于A列并集合并两个DataFrame

嘿,这事儿不难,咱们一步步来实现你要的效果:

首先,核心思路是用**外连接(outer join)**来获取A列的并集,然后重命名列,最后把缺失值补成0就行。

完整代码示例

import pandas as pd

# 定义原始DataFrame
df1 = pd.DataFrame({'A' : ['a','b','c'], 'B' : [10,20,30], 'C' : [2,5,3]})
df2 = pd.DataFrame({'A' : ['a','b','d'], 'B' : [34,21,45], 'C' : [1,5,5]})

# 1. 外连接合并,保留A列的所有值
merged_df = pd.merge(df1, df2, on='A', how='outer', suffixes=('_f', '_d'))

# 2. 重命名列,对应你要的命名规则
merged_df = merged_df.rename(columns={
    'B_f': 'f_M',
    'C_f': 'd_M',
    'B_d': 'f_B',
    'C_d': 'd_B'
})

# 3. 把缺失值填充为0,然后重置索引(让索引从0开始)
merged_df = merged_df.fillna(0).reset_index(drop=True)

# 调整列的顺序,和你期望的输出一致
merged_df = merged_df[['A', 'f_M', 'd_M', 'f_B', 'd_B']]

# 可选:把数值列转成整数类型(默认是float,因为填充了NaN)
merged_df = merged_df.astype(int)

print(merged_df)

代码细节解释

  • 外连接(how='outer'):确保A列的所有值(包括df1独有的c和df2独有的d)都被保留,不会丢失任何一行数据。
  • suffixes参数:给两个DataFrame中重名的列(B、C)加上后缀,避免合并后列名冲突,方便后续重命名。
  • rename():把带后缀的列改成你需要的f_M、d_M、f_B、d_B,完全匹配你的命名要求。
  • fillna(0):把合并后缺失的数值(比如c对应的df2的B、C值,d对应的df1的B、C值)统一填充为0。
  • astype(int):因为填充NaN后数值会变成float类型,这一步可以把所有数值列转成整数,和你期望的输出格式完全一致。

运行这段代码后,输出结果如下:

A  f_M  d_M  f_B  d_B
0  a   10    2    34    1
1  b   20    5    21    5
2  c   30    3     0    0
3  d    0    0    45    5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:04