如何对4个列结构一致的DataFrame执行inner join,现有双表拼接代码如何修改
多DataFrame inner join实现方案
方案1:直接传入DataFrame列表(最简洁)
pandas的join方法本身支持传入多个DataFrame组成的列表,不需要多次链式调用,修改代码如下:
# 直接把df2、df3、df4放到列表里传入join方法 dfJoin = df1.join([df2, df3, df4], how='inner') print(dfJoin)
注意:该方法默认按索引对齐合并,如果需要按指定公共列合并,可添加on='公共列名'参数。
方案2:reduce批量合并(适合DataFrame数量较多的场景)
如果后续需要合并的DataFrame数量还会增加,可以用functools.reduce实现批量合并,代码可扩展性更强:
from functools import reduce import pandas as pd # 把所有需要合并的DataFrame放到列表中 df_list = [df1, df2, df3, df4] # 批量执行inner join,此处用merge也可以,根据你的合并规则调整 dfJoin = reduce(lambda left, right: pd.merge(left, right, how='inner'), df_list) print(dfJoin)
注意:如果是按列合并而非索引合并,在merge方法中添加on='公共列名'参数即可。
内容的提问来源于stack exchange,提问作者JoeRoganFan69
相关产品推荐
相关产品推荐

