【发布时间】:2021-10-16 21:32:05
【问题描述】:
我在 Python 中有两个 Pandas 数据框,如下所示:
df1
ID
----
11
22
33
44
df2
ID1 ID2 ID3
--------------------
11 | 5 | 114
88 | 22 | 18
99 | 45 | 33
- df1 的行数比 df2 多
- 两个数据框中的值类型都是 int
我需要执行类似 df1 LEFT JOIN df2 之类的操作,并使用 df1 中的“ID”和 df2 中的“ID1”、“ID2”、“ID3”将 df1 与 df2 合并
- 合并 ID (df1) 和 ID1 (df2) 上的数据帧
- 如果 ID 不与 ID1 合并 --> 在 ID 和 ID2 上合并
- 如果 ID 不与 ID2 合并 --> 在 ID 和 ID3 上合并
- 如果行不合并,则返回 123456
因此,我需要以下内容:
ID ID1 ID2 ID3
--------------------------
11 | 11 | 5 | 114
22 | 88 | 22 | 18
33 | 99 | 45 | 33
44 | 123456 | 123456 | 123456
如何在 Python Pandas 中做到这一点?我完全不知道。
【问题讨论】:
-
如果您的第一个数据帧上的 ID=0,预期结果是什么?
-
ID 在您的第一个数据帧中是唯一的吗?
-
是的,id在df1中是唯一的
-
对于像 0 这样的多重匹配?
-
任务是这样的:通过ID = ID1将df与df2合并,但它不合并make ID = ID2,但它不合并make ID = ID3,但如果ID确实与任何ID1合并, ID2,ID3 写入 123456,df1 或 df2 中的任何一个都不可能为 0,我更改了它有问题:)
标签: python pandas dataframe merge