【问题标题】:Merging two dataframes that have only one column that names the same合并两个只有一列名称相同的数据框
【发布时间】:2021-09-28 11:50:36
【问题描述】:

我是合并数据框的新手。 我想比较两个数据框:

左:

    A
0   a
1   b
2   d

正确

    A
0   a
1   b
2   c
3   d

我想要这样的东西:

    A   A_1
0   a   a
1   b   b
2   NaN c
3   d   d

是否可以使用合并/加入/比较功能来做到这一点?

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    是的,这是可能的。 您要求的是正确的外部联接/合并。 请参阅this 详细概述。

    df_left = pd.DataFrame({'A': ['a', 'b', 'd']})
    df_right = pd.DataFrame({'A': ['a', 'b', 'c', 'd']})
    
    df_left.merge(df_right.rename(columns={'A':'A_1'}), left_on='A', right_on='A_1', how='right')
    

    出来

         A A_1
    0    a   a
    1    b   b
    2  NaN   c
    3    d   d
    

    【讨论】:

      【解决方案2】:

      如果您只想获取有关合并的信息,您可以使用 pd.merge 的指标参数:

      pd.merge(df1, df2, how='outer', on='A', indicator=True)
      
         A      _merge
      0  a        both
      1  b        both
      2  d        both
      3  c  right_only
      

      【讨论】:

        【解决方案3】:

        你也可以使用join:

        >>> left.set_index('A', drop=False) \
                .join(right.set_index('A', drop=False), rsuffix='_1', how='outer') \
                .reset_index(drop=True)
        
             A A_1
        0    a   a
        1    b   b
        2  NaN   c
        3    d   d
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-24
          • 1970-01-01
          • 2021-03-01
          • 2021-12-28
          • 1970-01-01
          • 2020-12-04
          • 2016-07-10
          相关资源
          最近更新 更多