根据另一个数据框中的条件表达式从熊猫数据框中删除行

问题描述

我有两个熊猫数据框df1和df2,它们的行数相等。 df2有11行包含NaN值。我知道如何通过应用以下方法删除df2中的空行:

df2.dropna(subset=['HIGH'],inplace=True)

但是现在我想从df1中删除这些相同的行(具有从df2中删除的具有相同行号的行)。我尝试了以下操作,但这似乎不起作用。

df1.drop(df2[df2['HIGH'] == 'NaN'].index,inplace=False)

还有其他建议吗?

解决方法

您可以使用以下方法获取所有带有NaN值的行:

is_NaN = df2.isnull()
row_has_NaN = is_NaN.any(axis=1)
rows_with_NaN = df2[row_has_NaN]

之后,您可以使用NaN删除行。 (就像您在问题中说的那样)

现在您可以从'rows_with_NaN'中获取所有索引。对于每个索引,您都可以将其从df1中删除(应该具有与您说的相同的索引)。

我希望这是正确的! (未完成测试)