我有一个熊猫数据框(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
要创建此代码(将Col1
与ColY
匹配,并使用ColZ
生成Col2
):
ColX ColY ColZ
Mon 2 B
Tues 3 C
Weds 5 A
Thurs 4 C
Fri 1 A
通常,我将从DF1
(d1 = DF1.set_index('Col1').to_dict()['Col2']
)创建一个字典,然后创建新列(DF2['ColZ'] = DF2['ColY'].map(d1)
)。
但是,显然d1
将具有重复的键,因此将不可能。据我所知,下一个最佳解决方案是针对DF1
中的每一行遍历DF2
中的每一行以查找匹配项,然后以这种方式设置ColZ
中的值。但是,显然,我正在处理一对表,这些表比给出的示例大得多,并且比map方法花费的时间长得多。有更实用的方法吗?
答案 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