【问题标题】:Excluding rows in python using multiple conditions on the same column在同一列上使用多个条件排除 python 中的行
【发布时间】:2023-01-06 23:22:14
【问题描述】:

我想通过为同一列指定多个值来排除行。我有以下数据框:

X Y
A 1
B 2
C 1
D 1
B 1
A 1

想要排除取值 A 和 B 的行。

尝试了以下代码:

new_df = df[~(df['X'] == 'A') & ~(df['X'] == 'B')]

它不起作用,新数据框有 0 行

【问题讨论】:

  • 看起来不错。不知道为什么它不起作用。你也可以df[~df['X'].isin(['A', 'B'])]
  • 代码似乎没问题。您可以尝试@SomeDude 的方法或此行df[~((df["X"] == "A") | (df["X"] == "B"))]

标签: python pandas filter


【解决方案1】:

用~

df[(~df.X.isin(['A','B']))]
Out[183]: 
   X  Y
2  C  1
3  D  1

【讨论】:

    【解决方案2】:

    或者您可以使用来自 SQL 世界的 pd.DataFrame.query,这使它更有意义并且更易于阅读。

    df.query("X not in ['A','B']")
    

    输出:

       X  Y
    2  C  1
    3  D  1
    

    【讨论】:

      【解决方案3】:

      您甚至可以使用 lambda 尝试相同的逻辑

      代码:

      df[~df.apply(lambda row: row.x in ['A','B'], axis=1)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-02
        • 2021-09-06
        • 2017-10-08
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2015-12-05
        相关资源
        最近更新 更多