繁体   English   中英

Python - Pandas -.str.包含多列过滤器

[英]Python - Pandas - .str.contains filter for multiple columns

我目前正在使用 pandas 模块中的.str.contains function 来过滤包含某些文本的单元格。 我现在已经设法让过滤器为 1 列工作,但是在做了一些研究和测试之后,我无法让它过滤 2 列。

输入数据示例:

在此处输入图像描述

语法示例 1:

这些语法自行产生以下 output:

test1 = data[data["Date"].str.contains("Tue 02 Feb 2021")]

在此处输入图像描述

test2 = data[data["Agent"].str.contains("NaN", na=True, regex=False)]

在此处输入图像描述

语法示例 2

当尝试使用 | 将这些放在一起时这不起作用,但不会返回任何错误

test3 = data[data["Agent"].str.contains("NaN", na=True, regex=False) | data["Date"].str.contains("Tue 02 Feb 2021")]

您需要将条件表达式放入括号中:

data[(data["Agent"].str.contains("NaN", na=True, regex=False) | data["Date"].str.contains("Tue 02 Feb 2021"))]

尝试这个:

test3 = data[np.logical_or(data["Agent"].str.contains("NaN", na=True, regex=False), data["Date"].str.contains("Tue 02 Feb 2021"))]

您也可以将其括在括号中,因为或 (|) 运算符对于 numpy arrays 已重载。

如果我理解正确,你想过滤掉你的 dataframe 对吗? 我想你会想要&而不是| 在这种情况下

>>> test3 = data[data["Agent"].str.contains("NaN", na=True, regex=False) & data["Date"].str.contains("Tue 02 Feb 2021")]
>>> print(test3)
  Agent Description             Date
2  None     example  Tue 02 Feb 2021
4  None     example  Tue 02 Feb 2021
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM