我正在尝试映射两个表,但由于复杂性,使用Pandas的内置函数很难做到这一点,所以我正在尝试构建自己的函数。
规则如下:我有一个包含INDEX和Col1的表。我有另一个表与INDEX(与table1无关),Col1,Col2和Col3。
我的功能是:
def funct(col1):
result= df2['cool1'][df2['col3'] == col1].value
if len(result) == 0:
result= df2[df2['col2'] == col1].value
if len(result) == 0:
return col1
return result[0]
希望我写的是正确的,但基本上它是在df2.col3上搜索df1.col1并返回df2.col1。如果df2.col3不存在则返回df2.col2,否则返回输入df1.col1。
然后我使用以下方式运行:
df1['col1'].apply(funct)
结果是正确的,但是在长度为6000记录的df1和可能为100的df2中,速度非常慢(20-30秒)。