0

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

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 并且 row withid2被替换为所有值df2(更新列的数量可以不同,因此不是更新特定列的值,而是替换整个row by id) 我不关心索引和排序

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

4

1 回答 1

2

如果需要唯一id并从df1if 中删除值也正在df2使用中:

df = pd.concat([df1, df2]).drop_duplicates('id', keep='last')
于 2021-01-20T08:54:57.990 回答