首页 > 解决方案 > 如何根据多列上的 OR 条件合并两个数据框?

问题描述

这个问题详细说明,我正在尝试匹配两个 Pandas 数据框。

匹配条件为:

(left_df.column_to_match == right_df.first_column) | (left_df.column_to_match == right_df.second_column )

或者,换句话说,左侧数据框中要匹配的列应该等于右侧数据框中的第一列或第二列 - 因此是 OR 条件。

我可以使用pd.merge和输入列表等解决方法

left_df.merge(right_df, left_on=['to_match', 'to_match'], right_on=['first_column', 'second_column'])

但这反过来又只在两列匹配时给我 AND 条件结果。也就是说,中的两列right_df具有相同的值。

这是输入数据的示例

// left df                           // right df
    To Match                             First       Second   
0   TCNU4843483                      0   ASDREF      TCNU4843483    
1   MA18219                          1   MA18219     Null
2   MA81192                          2   Null        Null
3   MFREIGHT                         3   HROB789     NESU6748392

这是预期的输出

    To Match          First       Second   
0   TCNU4843483       ASDREF      TCNU4843483   
1   MA18219           MA18219     Null
2   MA81192           Null        Null
3   MFREIGHT          Null        Null
4   Null              HROB789     NESU6748392

关于 Pandas 是否支持这个,或者我必须编写自己的函数的任何想法?

标签: python-3.xpandas

解决方案


推荐阅读