Вычтите два нечисловых кадра данных в пандах Python

У меня есть два кадра данных с одинаковыми именами столбцов. Я хочу вычесть одно из другого. Таким образом, AB должен дать мне то, что находится в A, но также не в B. Таким образом, минус пересечение A и B. Как показано на фотографии ниже.

введите описание изображения здесь

Код:

import pandas as pd
df1 = pd.DataFrame(columns=['A','B','C'])
df2 = pd.DataFrame(columns=['A','B','C'])
df1 = df1.append({'A': 'bmw','B':'three','C':'series'}, ignore_index=True)
df1 = df1.append({'A': 'merc','B':'S','C':'class'}, ignore_index=True)
df1 = df1.append({'A': 'Audi','B':'A','C':'eight'}, ignore_index=True)

df2 = df2.append({'A': 'merc','B':'ccc','C':'sss'}, ignore_index=True)
print(df1)
print(df2)
print(pd.merge(df1,df2,how='left'))

Результат, который я ожидаю:

{'A': 'bmw','B':'three','C':'series'} 
{'A': 'Audi','B':'A','C':'eight'}

Но вместо этого я получаю

{'A': 'merc','B':'ccc','C':'sss'}

1 ответ

Вам просто нужно удалить строки, где df1['A'] во всем df2['A'] серии.

res = df1.loc[~df1['A'].isin(df2['A'])]

print(res)

#       A      B       C
# 0   bmw  three  series
# 2  Audi      A   eight
Другие вопросы по тегам