【问题标题】:Delete rows from a pandas DataFrame based on a conditional expression in another dataframe根据另一个数据框中的条件表达式从熊猫数据框中删除行
【发布时间】:2021-01-07 15:11:48
【问题描述】:

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

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

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

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

还有其他建议吗?

【问题讨论】:

  • 交换两个命令,首先从df1 删除,然后是df2。或者你需要缓存索引。

标签: python pandas dataframe nan


【解决方案1】:

您可以通过以下方式获取所有包含 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 中删除(应该具有与您说的相同的索引)。

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

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 2016-09-15
    • 2017-10-04
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多