我有两个数据帧,列名相同。我想从另一个中减去一个。因此,A-B应该给我A中的内容,但也不应该是B.所以A减去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'}
答案 0 :(得分:2)
您只需删除整个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