如何在 Python Pandas 中使用一个数据框中的几列进行合并?
How to make merge using a few columns in one Data Frame in Python Pandas?
我有两个 Pandas 数据框,如下所示:
table1
ID
------
11
22
33
44
table2
ID1 ID2 ID3 VAL
----------------------
11 | 108 | 5 | 5555
45 | 22 | 1146 | 4567
67 | 4987 | 33 | 105
我需要合并 table1 和 table2 使用来自 table1 的列“ID”和来自的列:“ID1”、“ID2”、“ID3” table2.
我想这样做:
- 合并 ID 和 ID1
- 如果 ID 不与 ID1 合并 --> 合并 ID 和 ID2
- 如果 ID 不与 ID1 和 ID2 合并 --> 合并 ID 和 ID3
- 如果行不合并,则给出 NULL 或 NaN
因此我需要 table 如下所示:
ID ID1 ID2 ID3 VAL
-------------------- -----------
11 | 11 | NULL | NULL | 5555
22 | NULL | 22 | NULL | 4567
33 | NULL | NULL | 33 | 105
44 | NULL | NULL | NULL | NULL
我如何在 Python Pandas 中做到这一点?
for c in df2.columns[:-1]:
df1[c] = np.where(df1['ID'].eq(df2[c]),df1['ID'],np.nan)
df1 = df1.join(df2.iloc[:,-1])
ID
ID1
ID2
ID3
VAL
0
11
11
nan
nan
5555
1
22
nan
22
nan
4567
2
33
nan
nan
33
105
3
44
nan
nan
nan
nan
我有两个 Pandas 数据框,如下所示:
table1
ID
------
11
22
33
44
table2
ID1 ID2 ID3 VAL
----------------------
11 | 108 | 5 | 5555
45 | 22 | 1146 | 4567
67 | 4987 | 33 | 105
我需要合并 table1 和 table2 使用来自 table1 的列“ID”和来自的列:“ID1”、“ID2”、“ID3” table2.
我想这样做:
- 合并 ID 和 ID1
- 如果 ID 不与 ID1 合并 --> 合并 ID 和 ID2
- 如果 ID 不与 ID1 和 ID2 合并 --> 合并 ID 和 ID3
- 如果行不合并,则给出 NULL 或 NaN
因此我需要 table 如下所示:
ID ID1 ID2 ID3 VAL
-------------------- -----------
11 | 11 | NULL | NULL | 5555
22 | NULL | 22 | NULL | 4567
33 | NULL | NULL | 33 | 105
44 | NULL | NULL | NULL | NULL
我如何在 Python Pandas 中做到这一点?
for c in df2.columns[:-1]:
df1[c] = np.where(df1['ID'].eq(df2[c]),df1['ID'],np.nan)
df1 = df1.join(df2.iloc[:,-1])
ID | ID1 | ID2 | ID3 | VAL | |
---|---|---|---|---|---|
0 | 11 | 11 | nan | nan | 5555 |
1 | 22 | nan | 22 | nan | 4567 |
2 | 33 | nan | nan | 33 | 105 |
3 | 44 | nan | nan | nan | nan |