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')
我遇到了将两个 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')