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

如何有效合并多个Pandas DataFrame?实例求助

合并多个同主键的Pandas DataFrame

你的三个DataFrame共享唯一关联列name,且该列内容完全匹配,直接基于name列做内连接合并就能得到目标结果,以下是两种可行方法:

方法1:链式调用merge

先创建示例DataFrame(可直接替换为你的真实数据),然后通过多次merge完成合并:

import pandas as pd

# 示例DataFrame
df1 = pd.DataFrame({'name': ['apple', 'banana', 'cucumber'], 'id': [1, 2, 3]})
df2 = pd.DataFrame({'name': ['apple', 'banana', 'cucumber'], 'colour': ['red', 'yellow', 'green']})
df3 = pd.DataFrame({'name': ['apple', 'banana', 'cucumber'], 'type': ['fruit', 'fruit', 'vegetable']})

# 链式合并,默认内连接(how='inner')
merged_df = df1.merge(df2, on='name').merge(df3, on='name')
print(merged_df)

执行后输出的结果就是你需要的格式,不会出现NaN值。

方法2:用reduce批量合并(适合多DataFrame场景)

如果需要合并的DataFrame数量较多,可以借助functools.reduce批量处理:

import pandas as pd
from functools import reduce

# 把所有要合并的DataFrame放入列表
dfs = [df1, df2, df3]

# 批量合并所有DataFrame
merged_df = reduce(lambda left, right: left.merge(right, on='name'), dfs)
print(merged_df)

为什么之前的concat/merge用法不对?

  • 使用concat(axis=1)是按索引对齐拼接列,如果你的DataFrame索引不严格对应,就会出现大量NaN;
  • 若之前merge时没指定on='name',或错误使用外连接参数,也可能出现NaN。只要明确指定关联列name并使用默认的内连接,就能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:48:11