我有两个数据框DF1
和DF2
。我的目标是查找 DF2
和 DF1
列
key ;并将返回结果保存在 DF3
中。有人可以帮我得到
DF3
?
例如
DF1 DF2
map test1 test2 No. outcome
A NaN NaN 1 AA
B NaN 5 2 BB
C 1 6 3 CC
D 2 7 4 DD
E 3 NaN 5 EE
F 4 NaN 6 FF
G 5 8 7 GG
H 6 9 8 HH
I 7 10 9 II
10 JJ
11 KK
12 LL
13 MM
DF3
map test1 test2 outcome1 outcome2
A NaN NaN NaN NaN
B NaN 5 NaN EE
C 1 6 AA FF
D 2 7 BB GG
E 3 NaN CC NaN
F 4 NaN DD NaN
G 5 8 EE HH
H 6 9 FF II
I 7 10 GG JJ
我目前正在使用两个连接函数,但这不是我需要的。它会删除 DF1
中的 NaN
,并仅返回 test1
和 test2
的重叠部分。
df3 = df1.merge(df2, how='inner', left_on='test1', right_on='No.')
df3 = df3.merge(df2, how='inner', left_on='test2', right_on='No.')
目前我的代码将返回以下内容:
DF3
map 测试 1 测试 2 结果 1 结果 2
C 1 6 AA FF
D 2 7 BB GG
G 5 8 EE HH
H 6 9 FF II
我 7 10 GG JJ
最佳答案
在这种情况下, map 会更有效
DF3 = DF1.copy()
DF3['outcome1'] = DF1['test1'].map(DF2.set_index('No.')['outcome'])
DF3['outcome2'] = DF1['test2'].map(DF2.set_index('No.')['outcome'])
map test1 test2 outcome1 outcome2
0 A NaN NaN NaN NaN
1 B NaN 5.0 NaN EE
2 C 1.0 6.0 AA FF
3 D 2.0 7.0 BB GG
4 E 3.0 NaN CC NaN
5 F 4.0 NaN DD NaN
6 G 5.0 8.0 EE HH
7 H 6.0 9.0 FF II
8 I 7.0 10.0 GG JJ
关于python - 如何加入/合并数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527318/