Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python将正则表达式应用于系列中的元素_Python_Regex_Python 3.x_Pandas_Dataframe - Fatal编程技术网

如何使用Python将正则表达式应用于系列中的元素

如何使用Python将正则表达式应用于系列中的元素,python,regex,python-3.x,pandas,dataframe,Python,Regex,Python 3.x,Pandas,Dataframe,我有一个名为“Values”的数据框和列 请查找下面的代码以创建数据帧 df = pd.DataFrame({'Person_id':[1,2,3,4,5], 'Values':[np.nan,np.nan,'1.Yes','2.No', np.nan], 'Ethnicity':['1.Chinese','2.Indian','3.Malay',np.nan,np.nan]}) 执行上述代码后,dataframe如下所示 我只给出了一个示例数据,这是主程序的一部分 从上面的数

我有一个名为“Values”的数据框和列

请查找下面的代码以创建数据帧

df = pd.DataFrame({'Person_id':[1,2,3,4,5],
 'Values':[np.nan,np.nan,'1.Yes','2.No', np.nan],
       'Ethnicity':['1.Chinese','2.Indian','3.Malay',np.nan,np.nan]})
执行上述代码后,dataframe如下所示

我只给出了一个示例数据,这是主程序的一部分

从上面的数据框中,我想找到特定行的“Values”列是否包含“Yes”或“No”作为使用regex的值

例如,我想知道df['Values][2]的值中是否包含'Yes'关键字/术语

为此,我编写了下面的代码,但无法获得预期的输出

df['Values'] = df['Values'].astype(str) 
df['Values'][2].contains('Yes|No',regex=True)
尽管多次尝试/修改上述代码并进行搜索,但我无法获得/解决此问题。我得到下面的错误

AttributeError: 'str' object has no attribute 'contains'
如何获取值“是”或“否”是否存在于dataframe中列的特定单元格中

请注意,这是我用于循环和索引的较大程序的一部分。因此,我希望在单元格级别执行检查并获得输出。使用df.isin没有任何帮助

使用str.contains'Yes | No',regex=True

例:

输出:


输入re,然后输入boolre.search'Yes | No',df['Values'][2]?或者:df['Values'].str.contains'Yes | No',regex=True[2]您忘记使用.str访问器,例如:df['Values'].str.contains……看起来您甚至可能只想使用df['Values']创建一系列新的布尔值。str.contains'Yes | No',na=false。。。因为您直接处理的str对象没有包含,并且其本机成员资格测试没有regex功能,所以您必须使用re.match,正如@Wiktor在这里的第一条评论中所说的那样。
import pandas as pd
import numpy as np

df = pd.DataFrame({'Person_id':[1,2,3,4,5],
 'Values':[np.nan,np.nan,'1.Yes','2.No', np.nan],
       'Ethnicity':['1.Chinese','2.Indian','3.Malay',np.nan,np.nan]})

print(df["Values"].str.contains('Yes|No',regex=True))
0     NaN
1     NaN
2    True
3    True
4     NaN
Name: Values, dtype: object