如何使用Python将正则表达式应用于系列中的元素
我有一个名为“Values”的数据框和列 请查找下面的代码以创建数据帧如何使用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如下所示 我只给出了一个示例数据,这是主程序的一部分 从上面的数
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