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'。