如果列值不在df2列中,则获取df1的行

时间:2019-01-25 14:49:40

标签: python pandas dataframe

设置

我有2个pandas DataFrame,

df1 = pd.DataFrame(data = {'col1' : [1, 2, 3], 'col2' : [10, 11, 12], 'col3' : [4, 5, 6]}) 
df2 = pd.DataFrame(data = {'col1' : [1, 2, 4], 'col2' : [10, 11, 12]})

使得df1

   col1  col2  col3
0     1    10     4
1     2    11     5
2     3    12     6

df2

   col1  col2
0     1    10
1     2    11
2     4    12

问题

我想选择df2中所有在col1中具有值但不在df2中的col1中的行。

在示例中,这意味着result_df应该是

   col1  col2
2     4    12

但以下尝试,

result_df = df2[~df2.col1.isin(list(df2['col1']))]

结果为空数据框。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

删除列表(isinSeries一起使用)并将df2更改为df1

result_df = df2[~df2['col1'].isin(df1['col1'])]
print (result_df)
   col1  col2
2     4    12