Python улучшить условное слияние больших панд DFs - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть фрейм данных компаний, который называется slave <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 столбец - это тип объекта, а не строка.

и другой большой фрейм данных (2 ГБ)) основных данных <class 'pandas.core.frame.DataFrame'>:

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

Тип company_name является объектом того же типа, что и Company, а не строкой.

Я хочу просмотреть каждое значениев Company значение в company_name второго DF и добавить совпадение к серии:

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

как процесс поиска может быть намного быстрее для такой ситуации?главный список составляет 20 м строк, а токовая петля очень медленная.

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

я проверяю тип значения, это непростая операция слияния.Dlave и master DF не имеют одинаковый размер строк, master - это 20-метровые строки, тогда как slave - всего 1K строк.и я хочу сравнить столбец company_name, но получить соответствующее значение строки из другого столбца code и сохранить его как новый столбец в ведомой таблице.

Моя цель: как я могу использоватьВместо NumPy, используя векторизацию с массивами NumPy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...