【问题标题】:Joining two dataframes that have overlapping without specifying the overlapping columns but overwriting one of them (in python)加入两个重叠的数据框而不指定重叠列但覆盖其中一个(在python中)
【发布时间】:2020-07-27 12:09:34
【问题描述】:

我正在努力解决以下问题:

我有两个数据框: df1

 A      B      C
 1      5      8
 2      1      2
 3      2      1
 4      3      6

和 df2 具有相同的列名,但列数不如 df1:

 A      B      
 1      1      
 8      2      
 1      5      
 6      3

df1 和 df2 的行数总是相同的,只有 df2 的列数小于或等于 df1。此外,列名相同,但列中的值不同(它们可以相同,但绝对并非总是如此)

现在,我想创建一个新的数据框,其中 df1 和 df2 之间的重叠列(列 A 和 B,而不是 C)由 df2 确定,但具有与 df1 相同的形状(因此 df1 在数量上占主导地位列,但 df2 在从重叠列中获取哪个值方面占主导地位)。重要的是要知道我不想指定哪些列是重叠的。

所以结果应该是:

df3:

 A      B      C
 1      1      8
 8      2      2
 1      5      1
 6      3      6

这可能吗,尤其是在难以预先指定重叠列的情况下。任何一个聪明的解决方案?因为合并和连接的所有可能变体似乎都不可能。

【问题讨论】:

    标签: python dataframe merge


    【解决方案1】:

    只要df2中没有df1中不存在的列标签,就可以使用

    df3 = df1.copy()
    df3.loc[:,df2.columns] = df2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2021-09-13
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      相关资源
      最近更新 更多