【问题标题】:Removing a row in a DataFrame when a or b or c is true当 a 或 b 或 c 为真时删除 DataFrame 中的一行
【发布时间】:2014-06-14 20:56:36
【问题描述】:

我有一个数据框 df,它有五列。第一列名为 Phase 并包含文本。我想消除数据框中 Phase 为“xyz”或“ab”或“tlimit”的任何行

我尝试了以下方法,但没有成功:

df=df[df.Phase != 'xyz' or 'ab' or 'tlimit']

我也试过了:

df=df[df.Phase != 'xyz' or df.Phase!='ab' or df.Pase !='tlimit']

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    df = df[~df.Phase.isin(['xyz', 'ab', 'tlimit'])]

    【讨论】:

    • 一组比一个列表更好。
    • 如果它具有三个元素,那么关心差异是愚蠢的。如果要排除的项目集是可变的,那么 OP 可以将其写入一个辅助函数,该函数使用例如my context manager recipe 在重要的上下文期间将其作为一个集合使用。但这项额外的工作不是 this 问题的一部分。
    • @Emre 实际上 isin 做的第一件事就是把它变成一个集合,但这更多的是一个实现细节(将来它可能是一个更底层的对象)。
    • 是减号还是波浪号?当我这样做时,我使用减号。是一样的吗?
    • 这是一个波浪号,用于对数组中的每个元素进行逻辑否定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多