python - 使用依赖条件过滤 DataFrame 中的行
问题描述
抱歉,如果这已经被问到:
我想删除一列中值在 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)))]
解决方案
最容易理解的是否定整个条件,例如~((...) & (...))
:
df[~((df['columnA'].between(15, 25)) & (df['columnB'].isin(options)))]
或者您可以使用德摩根定律[wiki],并将其指定为(~ ...) | (~ ...)
df[(~df['columnA'].between(15, 25)) | (~df['columnB'].isin(options))]
所以x ∧ y的否定是(¬x)∨(¬y)。
推荐阅读
- git - 如果文件大小匹配,是否可以将 git 配置为忽略 .frx 文件中的差异?
- django - Django REST 框架:SearchFilter 不适用于搜索栏中的 2 个或更多值,如果它们来自同一字段
- flutter - Flutter:无法对齐底部的文本字段
- java - beans.xml 拦截器无效,发现模式“注释”
- flutter - 包装类不包装小部件
- sql-server - 安装 SQL Server Management Studio 17.6、18.5 代码时出错:0x800b0003:
- vb.net - 无法让 CefSharp Chromium 网络浏览器在目标 PC 上运行
- sql - 以小时为单位的日期差异
- javascript - 在传单上实时显示本地 .txt 文件
- javascript - 创建滑块以显示多个图像