Обновление значения столбца на основе нескольких условий в нескольких фреймах данных - PullRequest
0 голосов
/ 28 мая 2019

У меня есть два кадра данных, и я пытаюсь обновить Имя в DF1 на основе двух условий: Инструмент и Местоположение -

Датафреймы -

первый

DF1

NAME    Tool    Location
-       tool_1  location_1
-       tool_15 location_2 
-       tool_19 location_3 

и второй -

DF2

NAME    Tool    Location
name51  tool_1  location_1
name42  tool_15 location_2 
name33  tool_19 location_3

Я попытался использовать numpy, где проверка условий для обоих значений, однако, я получаю сообщение об ошибке -

ValueError: Может сравнивать только идентично помеченные объекты Series

Я понимаю, что проблема заключается в разных номерах строк в обоих моих фреймах данных. Я пробовал некоторые решения с сбросом индексов без какого-либо успеха.

Вот мой попытанный запрос -

DF1['NAME'] = np.where((DF1.Tool == DF2.Tool) & (DF1.Location== DF2.Location), DF2.Name)

Что может быть решением этой проблемы? Я не могу сопоставить оба кадра данных с точной длиной строк.

Ожидаемый результат для DF1 будет -

DF1

NAME    Tool    Location
name51  tool_1  location_1
name42  tool_15 location_2 
name33  tool_19 location_3

спасибо,

1 Ответ

1 голос
/ 28 мая 2019

Слияние и reindex():

DF1=DF1.merge(DF2,on=['Tool','Location'],suffixes=('_x','')).reindex(DF1.columns,axis=1)

     NAME     Tool    Location
0  name51   tool_1  location_1
1  name42  tool_15  location_2
2  name33  tool_19  location_3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...