使用相关条件过滤DataFrame中的行

时间:2019-08-16 22:32:06

标签: python pandas

很抱歉,是否已被要求:

我想删除一列中值在15-25之间的所有行,并在另一列中删除特定的字符串。

例如:

options = ['pizza', 'pasta'] 

df2 = df[(~df['columnA'].between(15, 25)) & df.loc[~df['columnB'].isin(options)]]

因此,如果某行在columnA中的值为15-25,但在columnB中没有“ pizza”或“ pasta”,那么我希望保留该行...

解决方案:

df[~((df['columnA'].between(15, 25)) & (df['columnB'].isin(options)))]

1 个答案:

答案 0 :(得分:2)

最容易理解的是否定整个条件,例如~((...) & (...))

df[~((df['columnA'].between(15, 25)) & (df['columnB'].isin(options)))]

或者您可以使用De Morgan's laws [wiki],并将其指定为(~ ...) | (~ ...)

df[(~df['columnA'].between(15, 25)) | (~df['columnB'].isin(options))]

所以 x∧y 的取反是(¬x)∨(¬y)