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

时间:2019-01-25 16:07:41

标签: python pandas dataframe

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

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

让df1和df2大小相等。问题是要删除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将不起作用。它基于之前创建的组。

1 个答案:

答案 0 :(得分:0)

首先,您应该在数据框中修复索引。除非索引是连续的,否则您要执行的操作将不起作用,因为您将通过按索引删除来删除多行。您应该尝试避免使用many to many relationships in data analytics - they simply cause more problems then they solve)。

尝试这样的事情:

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]])