在Pandas

时间:2016-02-09 17:26:14

标签: python pandas

我正在尝试映射两个表,但由于复杂性,使用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秒)。

0 个答案:

没有答案