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

按轴0的单列合并多个Pandas DataFrames的技术实现

合并多个Pandas DataFrame并保留唯一行记录

嘿,这个合并需求很清晰,我来给你一个简洁高效的解决方案,完美匹配你的要求!

步骤1:导入必要的模块

首先得导入Pandas和用于串联合并操作的reduce工具:

import pandas as pd
from functools import reduce

步骤2:定义你的DataFrames

先把你给出的几个DataFrame定义好:

df_b3 = pd.DataFrame({'P': ['l1','l3'], 'b3': ['+','+']}, index=[0,1])
df_ka = pd.DataFrame({'P': ['l1','l2','l3'], 'ka': ['+','+','+']}, index=[0,1,2])
df_kb = pd.DataFrame({'P': ['l2','l3'], 'kb': ['+','+']}, index=[0,1])

步骤3:批量合并所有DataFrame

把所有要合并的DataFrame放进一个列表,然后用reduce逐个执行外连接(outer join)——外连接能确保所有P列的条目都被保留,不管它出现在哪个原始DataFrame里:

# 把所有DataFrame存入列表
dfs = [df_b3, df_ka, df_kb]

# 批量合并,以P列为关联键,保留所有行
merged_df = reduce(lambda left, right: pd.merge(left, right, on='P', how='outer'), dfs)

步骤4:(可选)清理空值

合并后,那些在某个DataFrame里没有对应P条目的列会显示NaN,如果你想把这些空值替换成空字符串或者其他标记,可以用fillna:

merged_df = merged_df.fillna('')

最终结果

执行完上面的代码后,你会得到这样的结果:

P b3 ka kb
0  l1  +  +   
1  l3  +  +  +
2  l2     +  +

这个结果包含了所有输入列(P、b3、ka、kb),并且每一行都是唯一的P条目记录。

为什么这么做?

  • reduce帮我们避免了重复写多次merge代码,不管你有多少个DataFrame都能轻松处理
  • **外连接(how='outer')**确保不会丢失任何P列的条目,完美覆盖所有原始数据
  • 合并后的结果天然就是唯一行(每个P只出现一次),如果你担心有特殊情况,也可以加一行merged_df = merged_df.drop_duplicates(subset='P', keep='first')来双重确保唯一性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:53