如果另一个数据框中存在同一行,如何删除Pandas数据框中的行?

发布于 2021-01-29 15:13:28

我有两个数据框:

 df1 = row1;row2;row3
 df2 = row4;row5;row6;row2

我希望我的输出数据框仅包含df1中唯一的行,即:

df_out = row1;row3

如何最有效地获得此信息?

这段代码做了我想要的,但是使用了2个for循环:

a = pd.DataFrame({0:[1,2,3],1:[10,20,30]})
b = pd.DataFrame({0:[0,1,2,3],1:[0,1,20,3]})

match_ident = []
for i in range(0,len(a)):
    found=False
    for j in range(0,len(b)):
        if a[0][i]==b[0][j]:
            if a[1][i]==b[1][j]:
                found=True
    match_ident.append(not(found))

a = a[match_ident]
关注者
0
被浏览
95
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用merge参数indicator和外部联接query进行过滤,然后使用以下命令删除帮助器列drop

    DataFrames在所有列上都是联接的,因此on可以省略参数。

    print (pd.merge(a,b, indicator=True, how='outer')
             .query('_merge=="left_only"')
             .drop('_merge', axis=1))
       0   1
    0  1  10
    2  3  30
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看