Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接表或将值从一个表映射到另一个表_Python_Pandas - Fatal编程技术网

Python 连接表或将值从一个表映射到另一个表

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

我有两个数据帧,我想将多个列从较小的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         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楠楠