Python 如何加入/合并数据集?

Python 如何加入/合并数据集?,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧DF1和DF2。我的目标是使用DF1列查找DF2 钥匙;并将回报作为结果保存在DF3中。有人能帮我弄一辆吗 DF3 e、 g DF1-DF2 映射test1 test2编号结果 A楠楠1 AA B NaN 5 2 BB C 1 6 3立方厘米 D 2 7 4日 E3NAN5EE F 4南6楼 G 5 8 7 GG 小时698小时 I 7 10 9 II 10 JJ 11 KK 12 LL 13毫米 DF3 映射测试1测试2结果1结果2 阿楠 B NaN 5 NaN EE C 1 6

我有两个数据帧
DF1
DF2
。我的目标是使用
DF1
列查找
DF2
钥匙;并将回报作为结果保存在
DF3
中。有人能帮我弄一辆吗
DF3

e、 g

DF1-DF2
映射test1 test2编号结果
A楠楠1 AA
B NaN 5 2 BB
C 1 6 3立方厘米
D 2 7 4日
E3NAN5EE
F 4南6楼
G 5 8 7 GG
小时698小时
I 7 10 9 II
10 JJ
11 KK
12 LL
13毫米
DF3
映射测试1测试2结果1结果2
阿楠
B NaN 5 NaN EE
C 1 6 AA FF
D 2 7 BB GG
E3南CC南
F4楠DD楠
G 5 8 EE HH
H 6 9 FF II
I 7 10 GG JJ
我目前正在使用两个连接函数,但这不是我需要的。它在
DF1
中删除
NaN
s,只返回
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
映射测试1测试2结果1结果2 C 1 6 AA FF D 2 7 BB GG G 5 8 EE HH H 6 9 FF II
你喜欢代码高尔夫吗

pd.merge(pd.merge(df1, df2, how='left',left_on='test1',right_on='No.'),df2, how='left',left_on='test2',right_on='No.').drop(['No._x','No._y'], axis=1).rename(columns={'outcome_x':'outcome1','outcome_y':'outcome2'})

  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

在这种情况下,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数据类型的名称)?很抱歉造成混淆。我的意思是熊猫数据框架使用两个语句来实现这一点有什么错?数据框架也不是内置的。我已经相应地更新了你问题的标签。苏卡,这太棒了。所以本质上,我在合并中使用了how='inner',但应该使用how='left'。