Проблема
У меня есть два фрейма данных df1
форма (1597, 37)
и df2
форма (27293, 115)
. Оба они содержат имена, почтовые индексы и другие данные некоторых компаний. Имена не являются точным совпадением.
Пошаговое руководство для их объединения будет следующим:
- Фильтр по почтовому индексу
- Проверьте названия компаний в
df1
и df2
для поиска совпадающих имен и удаления компаний из df2
, которые уже есть в df1
. - Добавление новых компаний из
df2
в df1
. - Окончательная база данных составляет
df1
с добавлением новых компаний из df2
.
Если есть совпадение по названию, но почтовый индекс не тот, мы предполагаем, что это другая компания, и сохраняем его.
Пример:
df1 = pd.DataFrame({'NAME': ['Company A', 'Company B', 'Company C', 'Company D'],
'Postal Code': [9001, 9002, 9003, 9004]})
df2 = pd.DataFrame({'Name': ['this is b', 'some company d', 'c is a company',
'COMANY f', 'COMANY x', 'Company z','w company'],
'CP': [9002, 9006, 9003, 9005, 9001, 9007, 9008],
'Some other data': np.random.randn(7)})
df1
NAME Postal Code
0 Company A 9001
1 Company B 9002
2 Company C 9003
3 Company D 9004
df2
Name CP Some other data
0 this is b 9002 1.867558
1 some company d 9006 -0.977278
2 c is a company 9003 0.950088
3 COMANY f 9005 -0.151357
4 COMANY x 9001 -0.103219
5 Company z 9007 0.410599
6 w company 9008 0.144044
Желаемый результат:
df1_merged
NAME Postal Code Some other data
0 Company A 9001 NaN
1 Company B 9002 0.400157
2 Company C 9003 0.978738
3 Company D 9004 NaN
4 some company d 9006 -0.977278
5 COMANY f 9005 -0.151357
6 COMANY x 9001 -0.103219
7 Company z 9007 0.410599
8 w company 9008 0.144044