Попытка объединить DataFrames со многими условиямиPython

Программы на Python
Ответить
Anonymous
 Попытка объединить DataFrames со многими условиями

Сообщение Anonymous »

Это странно: у меня есть 3 фрейма данных, «prov_data», которые содержат идентификатор поставщика и учитывают регионы и категории (т. е. сколько раз этот поставщик взаимодействовал с этими регионами и категориями).
prov_data = DataFrame({'aprov_id':[1122,3344,5566,7788],'prov_region_1':[0,0,4,0],'prov_region_2':[2,0,0,0],
'prov_region_3':[0,1,0,1],'prov_cat_1':[0,2,0,0],'prov_cat_2':[1,0,3,0],'prov_cat_3':[0,0,0,4],
'prov_cat_4':[0,3,0,0]})

Изображение

"tender_data", который содержит то же самое, но для тендеров.
tender_data = DataFrame({'atender_id':['AA12','BB33','CC45'],
'ten_region_1':[0,0,1,],'ten_region_2':[0,1,0],
'ten_region_3':[1,1,0],'ten_cat_1':[1,0,0],
'ten_cat_2':[0,1,0],'ten_cat_3':[0,1,0],
'ten_cat_4':[0,0,1]})

Изображение

И, наконец, DF «no_match», который содержит запрещенные совпадения между поставщиком и тендером.
no_match = DataFrame({ 'prov_id':[1122,3344,5566],
'tender_id':['AA12','BB33','CC45']})

Изображение

Мне нужно сделать следующее: создать новый df, в который будут добавлены строки фреймов данных prov_data иender_data, если они (1) соответствуют одной или нескольким категориям (т. е. одна и та же категория > 0) И (2) соответствуют одной или нескольким категориям. регионы И (3) не входят в список no_match.
Итак, это даст мне этот DF:
df = DataFrame({'aprov_id':[1122,3344,7788],'prov_region_1':[0,0,0],'prov_region_2':[2,0,0],
'prov_region_3':[0,1,1],'prov_cat_1':[0,2,0],'prov_cat_2':[1,0,0],'prov_cat_3':[0,0,4],
'prov_cat_4':[0,3,0], 'atender_id':['BB33','AA12','BB33'],
'ten_region_1':[0,0,0],'ten_region_2':[1,0,1],
'ten_region_3':[1,1,1],'ten_cat_1':[0,1,0],
'ten_cat_2':[1,0,1],'ten_cat_3':[1,0,1],
'ten_cat_4':[0,0,0]})


Подробнее здесь: https://stackoverflow.com/questions/405 ... conditions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»