Python 连接表或将值从一个表映射到另一个表
我有两个数据帧,我想将多个列从较小的df映射到较大的df。较大的df是5000行,我希望根据较小表中的条件进行连接。例如,较大的数据帧是:Python 连接表或将值从一个表映射到另一个表,python,pandas,Python,Pandas,我有两个数据帧,我想将多个列从较小的df映射到较大的df。较大的df是5000行,我希望根据较小表中的条件进行连接。例如,较大的数据帧是: status type slot br 2 1 2 5 2 1 1 5 2 1 2 5 2 1 2 5 2 1 56 26 2
status type slot br
2 1 2 5
2 1 1 5
2 1 2 5
2 1 2 5
2 1 56 26
2 1 76 5
第二个数据帧如下所示:
slot name from to br
1 4PM 16 19 5
2 7PM 19 22 5
3 10PM 10 12 5
76 1PM 13 16 5
56 Lun 12 14 26
因此,基本上我想将第二个数据帧中的列映射到第一个基于列的列,即两个列“slot”和“br”,这样最终结果将在这两个列之间有一个连接,如下所示:
status type slot br name from to
2 1 2 5 7PM 19 22
2 1 1 5 4PM 16 19
2 1 2 5 7PM 19 22
2 1 2 5 7PM 19 22
2 1 56 26 Lun 12 14
2 1 76 5 1PM 13 16
我尝试使用if语句,但出现了一个错误。虽然我认为需要一个更有效的解决方案,使用联接或if也可以这是一个简单的合并,
how
参数指定了您希望合并如何工作,在本例中,使用左帧上的键
new_df = pd.merge(df,df2,on=['slot','br'],how='left')
print(new_df)
status type slot br name from to
0 2 1 2 5 7PM 19 22
1 2 1 1 5 4PM 16 19
2 2 1 2 5 7PM 19 22
3 2 1 2 5 7PM 19 22
4 2 1 56 26 Lun 12 14
5 2 1 76 5 1PM 13 16
我要提醒您,在继续之前,首先要了解合并是如何工作的,请查看以下内容:
df=pd.DataFrame({'status':[2,2,2,2,2],
“类型”:[1,1,1,1,1,1,1],
“插槽”:[2,1,2,2,56,76],
'br':[5.0,5.0,5.0,5.0,26.0,np.nan]})
df2=pd.DataFrame({'slot':[1,2,3,76,56],
“名称”:[“下午4点”、“晚上7点”、“晚上10点”、“下午1点”、“Lun”],
'from':[16,19,10,13,12],
“to”:[19,22,12,16,14],
'br':[5,5,5,26]})
打印(df.merge(df2,on=['slot','br'],how='left'))
状态类型插槽br名称从到
0125.07pm19.022.0
1 2 1 5.0下午4点16.0 19.0
2 2 1 2 5.0 7下午19.0 22.0
312125.0晚上7点19.022.0
4 2 1 56 26.0 Lun 12.0 14.0
52176楠楠