将查找表映射到pandas列的最快方法

时间:2018-11-19 19:43:29

标签: python pandas dataframe

我有一个熊猫数据框(DF1),如下所示:

Col1    Col2
A       1
A       5
B       2
C       3
C       4

我想将值映射到另一个数据帧(DF2),如下所示:

ColX    ColY
Mon     2  
Tues    3
Weds    5
Thurs   4
Fri     1

要创建此代码(将Col1ColY匹配,并使用ColZ生成Col2):

ColX    ColY    ColZ
Mon     2       B
Tues    3       C
Weds    5       A
Thurs   4       C
Fri     1       A

通常,我将从DF1d1 = DF1.set_index('Col1').to_dict()['Col2'])创建一个字典,然后创建新列(DF2['ColZ'] = DF2['ColY'].map(d1))。

但是,显然d1将具有重复的键,因此将不可能。据我所知,下一个最佳解决方案是针对DF1中的每一行遍历DF2中的每一行以查找匹配项,然后以这种方式设置ColZ中的值。但是,显然,我正在处理一对表,这些表比给出的示例大得多,并且比map方法花费的时间长得多。有更实用的方法吗?

1 个答案:

答案 0 :(得分:1)

使用map

df2['Colz']=df2.ColY.map(df1.set_index('Col2').Col1)
df2
Out[211]: 
    ColX  ColY Colz
0    Mon     2    B
1   Tues     3    C
2   Weds     5    A
3  Thurs     4    C
4    Fri     1    A