在python pandas中减去两个非数字数据帧

时间:2018-04-13 11:18:46

标签: python pandas dataframe merge subtraction

我有两个数据帧,列名相同。我想从另一个中减去一个。因此,A-B应该给我A中的内容,但也不应该是B.所以A减去A和B的交点。如下图所示。

enter image description here

代码:

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 个答案:

答案 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