Vlookup在Python(Pandas)的多列中

时间:2019-05-19 11:31:39

标签: python pandas dictionary merge vlookup

我在SO上看到很多帖子,要求在Python上执行类似于VLOOKUP的方法,并注意到大多数答案都表明使用mergemap,但是我不知道如何在这种情况下应用这些功能。
我有以下两个数据帧(REGISTER和WEEK)

注册:

NAME   |PARTNER
Rafael |Roger
Sergio |Gabriel
Edson  |Ney
Alan   |Nelson
...    |...

周:

MONDAY|PARTNER|TUESDAY|PARTNER|WEDNESDAY|PARTNER|...
Rafael| ??????|Sergio|??????  |Sergio   |????????
Edson | ??????|Edson |??????  |Alan     |????????
Alan  | ??????|Rafael|??????  |Edson    |????????

“ ????”应该替换为类似于= VLOOKUP('左边的名字',REGISTER,2,FALSE)

1 个答案:

答案 0 :(得分:3)

Serieszip中的s = REGISTER.set_index('NAME')['PARTNER'] for c1, c2 in zip( WEEK.columns[::2], WEEK.columns[1::2]): #print (c1, c2) WEEK[c2] = WEEK[c1].map(s) print (WEEK) MONDAY PARTNER TUESDAY PARTNER.1 WEDNESDAY PARTNER.2 0 Rafael Roger Sergio Gabriel Sergio Gabriel 1 Edson Ney Edson Ney Alan Nelson 2 Alan Nelson Rafael Roger Edson Ney map一起使用通过索引过滤的列名,因此第一列分别映射到第二列,第三列到第四列,并且类似:

replace

如果值不匹配,map将创建缺失值。因此,如果需要原始值用于不匹配的值,请使用rows代替cols