python改善大熊猫DF的条件合并

时间:2018-12-12 08:22:16

标签: python pandas numpy dataframe merge

我有一个称为从属<class 'pandas.core.frame.DataFrame'>的公司数据框:

Date    ID  Name    Company     Email
2018    1   AB      Apple       apple@apple.com
2017    2   BC      MicroSoft   ms@ms.com
2016    3   CD      Amazon      amz@amz.com

Company列是对象类型,而不是字符串。

和另一个主数据<class 'pandas.core.frame.DataFrame'>的大数据框(2GB):

code    company_name    product
123     MicroSoft       Windows
456     Apple           iphone
789     Amazon          cloud

类型company_name是对象,与Company相同的对象类型,而不是字符串。

我想在第二个DF的Company中的company_name值中查找每个值,并将匹配项附加到序列中:

def finder(slave, master):
    finalList = []
    for company in slave['Company']:
        if type(company) == 'some_specific_type':
            for info in master['company_name']:
                if company in info:
                    finalList.append(master.loc[str(info)]['code'])
                    break
        else:
            finalList.append(company)
    return finalList

在这种情况下,查找过程如何更快?主列表是20m线,电流循环非常慢。

slave['newCode'] = finder(slave, master) // very slow

结果将是:

Date    ID  Name    Company     Email               newCode
2018    1   AB      Apple       apple@apple.com     456
2017    2   BC      MicroSoft   ms@ms.com           123
2016    3   CD      Amazon      amz@amz.com         789

我正在检查值的类型,这不是简单的合并操作。从属设备和主设备DF的行大小不同,主设备为20m行,而从属设备仅为1K行。我想比较列company_name,但从另一列code获取相应的行值,并将其作为新列存储在从表中。

我的目标:如何通过对NumPy数组进行矢量化来使用NumPy?

0 个答案:

没有答案