Сопоставление значений столбца Pandas DataFrame с другим столбцом DataFrame - PullRequest
0 голосов
/ 05 декабря 2018
country = []
for i in df_temp['Customer Name'].iloc[:]:
    if i in gui_broker['EXACT_DDI_CUSTOMER_NAME'].tolist():
        country.append(gui_broker["Book"].values[gui_broker['EXACT_DDI_CUSTOMER_NAME'].tolist().index(i)])
    else:
        country.append("No Book Defined")
df_temp["Country"] = country

В настоящее время у меня есть большой DataFrame (df_temp) с одним столбцом («Имя клиента»), и я пытаюсь сопоставить его с небольшим DataFrame (gui_broker), который имеет 3 столбца - один из которых имеет все уникальные значениябольшой DataFrame ('EXACT_DDI_CUSTOMER_NAME').

После сопоставления строки значения df_temp я хочу создать новый столбец в df_temp со значением 'Book' моего маленького DataFrame (gui_broker) на основе сопоставления.Я пробовал каждый метод применения лямбда, но я не в курсе.Приведенный выше код предоставляет мне решение, но оно медленное и не такое как у Панд ...

Как именно я могу продолжить?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Для этого вы можете использовать слияние панд.как это ...

df_temp = df_temp.merge(gui_broker[['EXACT_DDI_CUSTOMER_NAME','Book']], left_on='Customer Name', right_on='EXACT_DDI_CUSTOMER_NAME', how='left' )
df_temp['Book'] = df_temp['Book'].fillna('No Book Defined')
0 голосов
/ 05 декабря 2018

Похоже, что вы ищете join (документы здесь ). Он объединяет DataFrame с другим, сопоставляя выбранные столбцы в первом с индексом во втором.

Итак

df_temp.join(gui_broker
             .set_index("EXACT_DDI_CUSTOMER_NAME")
             .loc[:, ["Book"]],
             on="Customer Name")
0 голосов
/ 05 декабря 2018

Я полагаю, что это следует сделать, используя map, чтобы сопоставить столбец Book gui_broker с EXACT_DDI_CUSTOMER_NAME, на Custome Name в df_tmp,:

df_tmp['Country'] = (df_tmp['Customer Name']
                     .map(gui_broker.set_index('EXACT_DDI_CUSTOMER_NAME').Book)
                     .fillna('No Book Defined'))

Хотя мне понадобятся некоторые данные для тестирования!

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