Создайте новый фрейм данных из аналогичных значений в двух столбцах из двух фреймов данных

#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