python - 使用依赖条件过滤 DataFrame 中的行

标签 python pandas

如果已经有人问过这个问题,我们深表歉意:

我想删除一列中值在 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/

相关文章:

python - 使用 scipy.optimize.curve_fit 传递附加参数?

python - 将数据框的行 reshape 为列

pandas - 将函数应用于 Pandas 效率的唯一值

python - 如何读取以 Python pandas 中的特定子字符串开头的 CSV 文件?

Python套接字io客户端不接受连接,但 Node 客户端接受

python - 缓慢的 Julia 启动时间

python - 如何在每次调用函数时缓存函数结果并更新缓存值?

javascript - Flask 中的 Ajax POST 请求

python - 在子图中控制 pandas Boxplot 中的刻度标签对齐

python - 将 NumPy 数组与 pandas DataFrame 连接(加入)