сравните несколько столбцов, чтобы получить строки, которые отличаются в двух панд фрейм данных

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть фреймы данных

 df1 
172
72A
12(1)
192
182


   

df2
172
72A
12(2)
122
88
 

Я хочу сравнить оба фрейма данных и хочу найти строки в df1, которые не найдены в df2,
тогда прогнозируемые строки должны быть записаны в новый столбец, нет необходимости учитывать значение внутри скобки.

 expected result
 122
 88
 

Ответ №1:

Используйте .isin ; однако скобки добавляют немного логики, поэтому вы можете split использовать скобки и take .str[0] , чтобы вернуть первую его часть. Имена столбцов буквально df1 и df2 , чтобы избежать путаницы. Переключите их на любые ваши фактические заголовки:

 df2[~df2['df2'].str.split('(').str[0].isin(df1['df1'].str.split('(').str[0])]

    df2
3   122
4    88
 

~ возвращает обратные строки вывода isin , которые были бы возвращены без использования ~ .