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

Python中合并DataFrame列表与指定列时遇类型错误求助

解决多DataFrame指定列合并的错误问题

错误原因

pd.merge() 仅支持传入两个单个的DataFrame/Series对象作为合并的左右数据源,你直接传入DataFrame列表,不符合参数要求,因此触发类型错误。

正确解决方案

要合并多个DataFrame,可通过迭代合并的方式实现,下面提供两种常用方法:

方法1:使用functools.reduce()批量合并

借助reduce函数迭代执行两两合并,代码示例:

import pandas as pd
from functools import reduce

# 定义待合并的DataFrame列表与合并键
dataframes = [df1, df2, df3, df4]
merge_keys = ["server", "ip"]

# 批量合并,how参数可按需调整:inner/outer/left/right
df_res = reduce(lambda left, right: pd.merge(left, right, on=merge_keys, how='outer'), dataframes)

方法2:循环逐个合并

手动循环实现两两合并,逻辑更直观:

import pandas as pd

merge_keys = ["server", "ip"]

# 初始化结果为第一个DataFrame
df_res = df1
# 依次合并剩余DataFrame
for df in [df2, df3, df4]:
    df_res = pd.merge(df_res, df, on=merge_keys, how='outer')

注意事项

  • how参数:根据需求选择合并方式,outer保留所有行,inner仅保留所有DataFrame共有的匹配行,left/right保留左/右DataFrame的所有行。
  • 确保所有DataFrame中server和ip列的数据类型一致,否则可能出现匹配失效的情况,若类型不一致可提前用astype()统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:05