Regex Pandas系列子字符串以字母开头和结尾
我有一个大熊猫系列,包含大约50万行这种形式: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']) 我想用以特定字母开头和结尾的单词来过滤这个系列。
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,这成功了,谢谢。你知道表演是什么吗?我想知道它对于大数据集的性能如何。不幸的是,我没有关于性能的答案。