繁体   English   中英

根据另一个数据框中的条件删除数据框中的行

[英]Delete rows in Dataframe based on condition in another Dataframe

我对如何根据以下条件删除数据框内的行很熟悉:

df1 = df1.drop(df1[<some boolean condition>].index)

令df1和df2为大小相等的DataFrame。 问题是要删除df2中满足上述df1条件的相同索引行。 我正在寻找一种优雅的解决方案,而不是保留索引,然后再次针对df2遍历它们。

例:

         df1                
    index  value
    1        4
    2        5
    3        6
    4        3
    1        1
    2        5
    1        3
    2        3
    3        2
    4        2
    5        1
    6        7
    7        12

      df2   
 index  value
    1        4
    2        5
    3        7
    4        3
    1        1
    2        109
    1        44
    2        3
    3        2
    4        2
    5        1
    6        7
    7        12

索引不是连续的,因此简单的df.drop将不起作用。 其基于之前创建的组。

首先,您应该在数据框中修复索引。 除非索引是连续的,否则您要执行的操作将不起作用,因为您将通过按索引删除来删除多行。 您应该尝试避免在数据分析中建立多对多关系-它们只会导致更多问题,然后才能解决( )。

尝试这样的事情:

df1.reset_index()
df2.reset_index()
for indexes, row in df1.iterrows():
    if df1.columnname = 2: #imaginary value, place Boolean condition here
       df1.drop(df1.index[[indexes]])
       df2.drop(df2.index[[indexes]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM