【问题标题】:how to concat two data frames with different column names in pandas? - python如何在熊猫中连接两个具有不同列名的数据框? - Python
【发布时间】:2016-08-23 20:21:53
【问题描述】:
df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})

我正在尝试使用来自df1 的键合并两个数据框。我想我应该为此使用pd.merge,但我如何告诉熊猫将值放在df2b 列中adf1 列中。这是我想要实现的输出:

    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3   10  13  16
4   11  14  17
5   12  15  18

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    只需使用concatrename 列作为df2 即可对齐:

    In [92]:
    pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True)
    
    Out[92]:
        a   x   y
    0   1   4   7
    1   2   5   8
    2   3   6   9
    3  10  13  16
    4  11  14  17
    5  12  15  18
    

    同样,您可以使用merge,但您需要像上面一样重命名该列:

    In [103]:
    df1.merge(df2.rename(columns={'b':'a'}),how='outer')
    
    Out[103]:
        a   x   y
    0   1   4   7
    1   2   5   8
    2   3   6   9
    3  10  13  16
    4  11  14  17
    5  12  15  18
    

    【讨论】:

      【解决方案2】:

      使用 numpy 连接数据帧,因此您不必重命名所有列(或显式忽略索引)。 np.concatenate 也适用于任意数量的数据帧。

      df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
      df.columns = [ 'a', 'x', 'y' ]
      df
      

      【讨论】:

        【解决方案3】:

        您可以重命名列,然后使用函数appendconcat

        df2.columns = df1.columns
        df1.append(df2, ignore_index=True)
        # pd.concat([df1, df2], ignore_index=True)
        

        您还可以将两个数据帧与来自numpyvstack 连接,并将生成的ndarray 转换为数据帧:

        pd.DataFrame(np.vstack([df1, df2]), columns=df1.columns)
        

        【讨论】:

          猜你喜欢
          • 2017-09-20
          • 2021-12-05
          • 2021-07-29
          • 2016-08-12
          • 2022-10-06
          • 2019-02-15
          • 2020-10-13
          • 1970-01-01
          • 2018-10-02
          相关资源
          最近更新 更多