如果已经有人问过这个问题,我们深表歉意:
我想删除一列中值在 15-25 之间的所有行,并在另一列中具有特定字符串。
例如:
options = ['pizza', 'pasta']
df2 = df[(~df['columnA'].between(15, 25)) & df.loc[~df['columnB'].isin(options)]]
因此,如果某行在 A 列中的值为 15-25,但在 B 列中没有“披萨”或“意大利面”,那么我希望保留该行...
解决方案:
df[~((df['columnA'].between(15, 25)) & (df['columnB'].isin(options)))]
最佳答案
最容易理解的是否定整个条件,例如~((...) & (...))
:
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)。
关于python - 使用依赖条件过滤 DataFrame 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57531811/