Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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 如何使用series.str.contains函数浏览字符串列表?_Python_Regex_String_Pandas - Fatal编程技术网

Python 如何使用series.str.contains函数浏览字符串列表?

Python 如何使用series.str.contains函数浏览字符串列表?,python,regex,string,pandas,Python,Regex,String,Pandas,我有信用卡费用数据,其中有一列包含费用说明。我还创建了一个包含不同费用类别的词典。例如,我有一个名为杂货费用(value)和正则表达式(Ralphs,Target)的类别。我将我的值与分隔符|组合在一个字符串中 我正在使用Series.str.contains(pat,case=True,flags=0,na=nan,regex=True)函数查看每个索引中的字符串是否包含我的正则表达式 #需要库 #作为pd进口熊猫 #进口稀土 已联接的_字符串=['|'。将(值)联接为值中的值] \u列表=连

我有信用卡费用数据,其中有一列包含费用说明。我还创建了一个包含不同费用类别的词典。例如,我有一个名为杂货费用(value)和正则表达式(Ralphs,Target)的类别。我将我的值与分隔符
|
组合在一个字符串中

我正在使用
Series.str.contains(pat,case=True,flags=0,na=nan,regex=True)
函数查看每个索引中的字符串是否包含我的正则表达式

#需要库
#作为pd进口熊猫
#进口稀土
已联接的_字符串=['|'。将(值)联接为值中的值]
\u列表=连接的\u字符串
示例输出:|u列表=[Gas | Internet | Water | Electric,VONS | RALPHS | RALPHS | PAVILIONS | FOOD4LESS | TRADER JOE'S |杂货店| FOOD 4 LESS |芽菜|MARKET@WORK“]


由于某些原因,代码没有遍历列表中的每个字符序列。它只遍历一个字符序列,但我需要它遍历多个字符序列。

由于没有可比较的数据,我将只显示一些虚拟数据

将熊猫作为pd导入
姓名=[‘亚当’、‘巴里’、‘查克’、‘丹尼斯’、‘埃隆’、‘弗里德曼’、‘乔治’、‘哈利’]
df=pd.DataFrame(名称、列=['names'])
#应用regex并保存到列:regex
df['Regex']=df.Names.str.contains('[ae]',Regex=True)
df
输出

    Names   Regex
0   Adam    True
1   Barry   True
2   Chuck   False
3   Dennis  True
4   Elon    False
5   Fridman True
6   George  True
7   Harry   True
    Description                             Regex_A Regex_B
0   FOOD4LESS 0508 0000FULLERTON CA         False   True
1   Electricity,VONS 0777 0123FULLERTON NY  True    True
2   PAVILIONS 1248 9800Ralphs MA            False   True
3   SPROUTS 9823 0770MARKET@WORK WI         False   True
4   Internet 0333 1008Water NJ              True    True
5   Enternet 0444 1008Wager NJ              False   False
['Gas',
 'Internet',
 'Water',
 'Electricity,VONS',
 'RALPHS',
 'Ralphs',
 'PAVILIONS',
 'FOOD4LESS',
 "TRADER JOE'S",
 'GROCERY OUTLET',
 'FOOD 4 LESS',
 'SPROUTS',
 'MARKET@WORK']
用另一个类似于问题的例子来解决问题 首先,您的
列表
变量不正确。假设它是一个打字错误,我会在这里介绍我的解决方案。请注意,
regex
或正则表达式,当应用于一列数据时,本质上意味着您正在尝试查找一些模式。首先,您如何知道/检查您的模式识别是否正常ng好吗?好的,您至少需要几个数据点来验证正则表达式的结果。由于您只提供了一行数据,因此,我将在这里生成一些虚拟数据,并测试
regex
是否产生预期的结果

注意:请查看数据预筛选部分以查看数据,以便您可以复制和测试解决方案

将熊猫作为pd导入
进口稀土
#从目标关键字列表中生成正则表达式字符串
regex_表达式=“|”。join(_列表)
#从描述列表中创建dataframe
#-->请参阅解决方案的数据部分。
df=pd.DataFrame(描述,列=['Description'])
#一个子集的正则表达式搜索结果
#目标关键词:“天然气|互联网|水|电,VON”
df['Regex_A']=df.Description.str.contains(“气体|互联网|水|电,VONS”,Regex=True)
#所有目标关键字的正则表达式搜索结果
df['Regex_B']=df.Description.str.contains(Regex_表达式,Regex=True)
df
输出

    Names   Regex
0   Adam    True
1   Barry   True
2   Chuck   False
3   Dennis  True
4   Elon    False
5   Fridman True
6   George  True
7   Harry   True
    Description                             Regex_A Regex_B
0   FOOD4LESS 0508 0000FULLERTON CA         False   True
1   Electricity,VONS 0777 0123FULLERTON NY  True    True
2   PAVILIONS 1248 9800Ralphs MA            False   True
3   SPROUTS 9823 0770MARKET@WORK WI         False   True
4   Internet 0333 1008Water NJ              True    True
5   Enternet 0444 1008Wager NJ              False   False
['Gas',
 'Internet',
 'Water',
 'Electricity,VONS',
 'RALPHS',
 'Ralphs',
 'PAVILIONS',
 'FOOD4LESS',
 "TRADER JOE'S",
 'GROCERY OUTLET',
 'FOOD 4 LESS',
 'SPROUTS',
 'MARKET@WORK']
数据准备 在一个实际的场景中,我会假设,对于您在问题中提出的问题类型,您将有一个要在dataframe列中查找的单词列表

因此,我冒昧地首先将您的字符串转换为字符串列表

the|u list=“[Gas | Internet | Water | Electric,VONS | RALPHS | RALPHS | PAVILIONS | Food4 LESS | TRADER JOE |杂货店| FOOD 4 LESS |芽菜|MARKET@WORK]"
_列表=_列表。替换(“[”,“”)。替换(“]”,“”)。拆分(“|”)
清单
输出

    Names   Regex
0   Adam    True
1   Barry   True
2   Chuck   False
3   Dennis  True
4   Elon    False
5   Fridman True
6   George  True
7   Harry   True
    Description                             Regex_A Regex_B
0   FOOD4LESS 0508 0000FULLERTON CA         False   True
1   Electricity,VONS 0777 0123FULLERTON NY  True    True
2   PAVILIONS 1248 9800Ralphs MA            False   True
3   SPROUTS 9823 0770MARKET@WORK WI         False   True
4   Internet 0333 1008Water NJ              True    True
5   Enternet 0444 1008Wager NJ              False   False
['Gas',
 'Internet',
 'Water',
 'Electricity,VONS',
 'RALPHS',
 'Ralphs',
 'PAVILIONS',
 'FOOD4LESS',
 "TRADER JOE'S",
 'GROCERY OUTLET',
 'FOOD 4 LESS',
 'SPROUTS',
 'MARKET@WORK']
此外,我们在有我们要查找的关键字的地方创建了五行数据;然后在其中添加另一行,作为
regex
模式搜索的结果,我们希望在其中出现
False

说明=[
“无食品0508 000富勒顿加州”,
“纽约富勒顿电力公司0777 0123”,
“亭子1248 9800拉尔夫马”,
'芽98230770MARKET@WORKWI',
“互联网0333 1008Water NJ”,
“Enternet 0444 1008Wager NJ”,
]

是否可能是缩进错误?第二行是缩进到for下的,还是问题中的缩进方式?如果是这样,那就是你的问题!你能分享一些示例数据和相应的预期结果吗?不,我只是在堆栈溢出方面遇到了困难。@NickBosio你的列表实际上不是一个字符串。这里的分隔符是什么?它是
“|”
?还是,您试图使用
列表
变量的内容作为正则表达式字符串?请为
df['Description']
@NickBosio再提供几行示例数据。请查看更新的解决方案(有一节描述了您在问题中提出的具体问题的解决方案)并让我知道这是否有帮助。