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
相关产品推荐
相关产品推荐

