#python #dataframe #compare
Вопрос:
У меня есть два фрейма данных (фреймы данных A и B). Оба кадра данных включают столбцы «Данные» и «Информация», но другие столбцы отличаются.
Я хотел бы изменить фрейм данных A, удалив строки, которых нет в фрейме данных B.
Так, например:
Фрейм данных A
A = {'Date': ["20-10-2020", "23-10-2020", "24-10-2020", "28-10-2020"],
'About': [Sandra, Peter, Mare, Bas], 'Score': [15, 20, 35, 21],
'Hours': [2, 4, 5, 1]}
Фрейм данных B
B = {'Date': ["20-10-2020", "26-10-2020", "24-10-2020", "28-10-2020"],
'About': [Sandra, Suzan, Koen, Bas],
'ASWR': [105, 170, 120, 101]]}
Как вы видите, оба включают Дату и около, но остальное другое.
Теперь я хотел бы получить это:
Фрейм данных A (вывод)
A = {'Date': ["20-10-2020", "28-10-2020"],
'About': [Sandra, Bas],
'Score': [15,21],
'Hours': [2, 1]}
Как вы видите, данные из Peter and Mare удаляются, потому что Данные и/или значение about не совпали с фреймом данных B
Я попробовал следующий код
df_A = df_A.loc[~((df_A['Date'].isin(df_B['Date'])))]
Однако я не мог сделать это на сегодняшний день и примерно в одно и то же время.
Кто-нибудь может мне помочь, пожалуйста?
Ответ №1:
IIUC, вы хотите использовать merge
:
>>> df_A.merge(df_B, on=["Date", "About"])
Date About Score Hours ASWR
0 20-10-2020 Sandra 15 2 105
1 28-10-2020 Bas 21 1 101