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
Regex Pandas系列子字符串以字母开头和结尾_Regex_Pandas_String_Filter - Fatal编程技术网

Regex Pandas系列子字符串以字母开头和结尾

Regex Pandas系列子字符串以字母开头和结尾,regex,pandas,string,filter,Regex,Pandas,String,Filter,我有一个大熊猫系列,包含大约50万行这种形式: pd.Series(['Lorem ipsum dolor sit amet', 'consectetur adipiscing elit', 'quis euismod mi, id venenatis urna', 'curabitur vel augue viverra diam imperdiet laoreet']) 我想用以特定字母开头和结尾的单词来过滤这个系列。

我有一个大熊猫系列,包含大约50万行这种形式:

pd.Series(['Lorem ipsum dolor sit amet',
            'consectetur adipiscing elit',
            'quis euismod mi, id venenatis urna',
            'curabitur vel augue viverra diam imperdiet laoreet'])
我想用以特定字母开头和结尾的单词来过滤这个系列。例如,如果开始字母为“l”,结束字母为“m”,则我希望将具有“lorem”作为子字符串的行包括在内,或者更确切地说是“^l.*m$”


因此,我需要将字符串拆分为子字符串并执行.str.contains(“^l.*m$”),但我不知道有什么优化方法可以执行此操作。

您可以使用从l到m的单词边界匹配
\bL\w*m\b
,以及介于两者之间的匹配0个或更多单词字符

import pandas as pd

s = pd.Series(['Lorem ipsum dolor sit amet',
           'consectetur adipiscing elit',
           'quis euismod mi, id venenatis urna',
           'curabitur vel augue viverra diam imperdiet laoreet'])
s = s.str.contains(pat = r'\bL\w*m\b', regex = True)
print(s)
输出

0     True
1    False
2    False
3    False
dtype: bool

您可以使用从L到m的单词边界匹配
\bL\w*m\b
,以及介于两者之间的0个或多个单词字符的匹配

import pandas as pd

s = pd.Series(['Lorem ipsum dolor sit amet',
           'consectetur adipiscing elit',
           'quis euismod mi, id venenatis urna',
           'curabitur vel augue viverra diam imperdiet laoreet'])
s = s.str.contains(pat = r'\bL\w*m\b', regex = True)
print(s)
输出

0     True
1    False
2    False
3    False
dtype: bool

您可以将单词与第四只鸟进行匹配,您能提供一个答案吗?我尝试了s.str.contains('\bL\w*m\b'),但我没有得到任何匹配,而我应该得到包含Lorem的第0行。像这样尝试
print(s.str.contains(pat=r'\bL\w*m\b',regex=True))
@Thefourthbird,这成功了,谢谢。你知道表演是什么吗?我想知道它对大量数据的性能如何。不幸的是,我没有关于性能的答案。您可以将这些单词与第四只鸟进行匹配,您能提供一个答案吗?我尝试了s.str.contains('\bL\w*m\b'),但我没有得到任何匹配,而我应该得到包含Lorem的第0行。像这样尝试
print(s.str.contains(pat=r'\bL\w*m\b',regex=True))
@Thefourthbird,这成功了,谢谢。你知道表演是什么吗?我想知道它对于大数据集的性能如何。不幸的是,我没有关于性能的答案。