Pandas 用行替换合并两个 DF

Pandas merge two DF with rows replacement

我遇到了将两个 DF 合并为一个并按第二个 DF 的 id 值保存所有重复行的问题。示例:

df1 = pd.DataFrame({
    'id': ['id1', 'id2', 'id3', 'id4'],
    'com': [134.6, 223, 0, 123],
    'malicious': [False, False, True, False]
})

df2 = pd.DataFrame({
    'id': ['id7', 'id2', 'id5', 'id6'],
    'com': [134.6, 27.6, 0, 123],
    'malicious': [False, False, False, False]
})

df1
    id    com  malicious
0  id1  134.6      False
1  id2  223.0      False
2  id3    0.0       True
3  id4  123.0      False

df2
    id    com  malicious        date
0  id7  134.6      False  2021-01-01
1  id2   27.6      False  2021-01-01
2  id5    0.0      False  2021-01-01
3  id6  123.0      False  2021-01-01

我是。期望输出为:

    id    com  malicious        date
1  id1  134.6      False  null
2  id3    0.0       True  null
3  id4  123.0      False  null
4  id7  134.6      False  2021-01-01
5  id2   27.6      False  2021-01-01
6  id5    0.0      False  2021-01-01
7  id6  123.0      False  2021-01-01

如您所见,我们添加了一个新列,df1 的所有行现在都为 null,id2 的行被替换为 df2 中的所有值(更新列的数量可能不同,所以这不是关于更新特定列的值,而是关于用 id 替换整行) 我不关心索引和排序

寻找有效的解决方案,因为我有大量文件,我应该以这种方式合并到主 DF

如果需要从 df1 中删除值的唯一 id 如果 df2 中也存在,请使用:

df = pd.concat([df1, df2]).drop_duplicates('id', keep='last')