【发布时间】:2020-12-28 19:50:45
【问题描述】:
我有一个包含大约 50 万行这种形式的大型 pandas 系列:
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$'),但是我不知道如何优化。
【问题讨论】:
-
你可以用
\bl\w*m\b匹配单词 -
@Thefourthbird,你能提供一个答案吗?我尝试了 s.str.contains('\bL\w*m\b') 并且没有得到任何匹配,当我应该得到包含 Lorem 的第 0 行时。
-
试试这个
print(s.str.contains(pat = r'\bL\w*m\b', regex = True)) -
@Thefourthbird,这行得通,谢谢。你知道表演是什么吗?我想知道它将如何处理大量数据。
-
很遗憾,我没有关于性能的答案。
标签: regex pandas string filter