Создать функцию, которая объединяет два набора данных на основе нескольких столбцов - PullRequest
0 голосов
/ 17 марта 2020

У меня есть 2 кадра данных:

Один большой с 3 столбцами объекта (например, Клиент, Регион, Тип) и меньший кадр данных с теми же 3 столбцами, а также количество, к которому я пытаюсь объединиться большой df. Как поиск.

Что это за функция, которая берет большую строку кадра данных и определяет, какое количество для каждой строки, основываясь на совпадении трех столбцов объекта?

Пример кода:

def quantity(row):
   if row['Client'] == 'clientA':
       if (row['Region'] in ['west']) & (row['Type'] in ['low']):
           return 0
       else:
           if (row['Client'] in ['east']) & (row['Type'] in ['high']):
               return 0.4
           else:
               return 0.5

Это работает, однако я хочу сделать 0, 0.4 и 0.5 не жестким кодом, а вместо этого извлекать эти значения из другого небольшого кадра данных

1 Ответ

0 голосов
/ 17 марта 2020

Объединить большой фрейм данных с маленьким. Чтобы сохранить все строки большого фрейма данных, используйте параметр how="left":

df_large = df_large.merge(df_small, how="left")

Чтобы проверить это, пусть

df_large
     Client   Region   Type
0   clientA     west    low
1   clientA     east   high
2   clientB     east    low
3   clientB    north   high
4   clientB    south    low
5   clientC     west   high     

и

df_small
     Client   Region   Type  quantity
0   clientB    north   high        10
1   clientA     east   high         2

Тогда

df_large.merge(df_small, how="left")
     Client   Region   Type  quantity
0   clientA     west    low       NaN
1   clientA     east   high       2.0
2   clientB     east    low       NaN
3   clientB    north   high      10.0
4   clientB    south    low       NaN
5   clientC     west   high       NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...