连接具有重叠的两个数据帧,而不指定重叠列,但覆盖其中一个(在python中)
我正在努力解决以下问题: 我有两个数据帧: df1 和df2具有相同的列名,但列数不如df1:连接具有重叠的两个数据帧,而不指定重叠列,但覆盖其中一个(在python中),python,dataframe,merge,Python,Dataframe,Merge,我正在努力解决以下问题: 我有两个数据帧: df1 和df2具有相同的列名,但列数不如df1: A B 1 1 8 2 1 5 6 3 df1和df2的行数始终相同,只有df2的列数小于或等于df1。此外,列名相同,但列中的值不同(它们可以相同,但绝对不总是如此) 现在,我想创建一个新的数据帧,其中df1和df2(a列和B列,而不是C列)之间的重叠列由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:
这是可能的,特别是在不预先指定重叠列的情况下。有人能想出一个聪明的解决办法吗?因为合并和联接的所有可能变体似乎都不可能实现这一点。只要df1中没有df2中的列标签,就可以使用
df3 = df1.copy()
df3.loc[:,df2.columns] = df2
A B C
1 1 8
8 2 2
1 5 1
6 3 6
df3 = df1.copy()
df3.loc[:,df2.columns] = df2