很抱歉,是否已被要求:
我想删除一列中值在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)))]
答案 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)。