我正在寻找包含特定字符串的行。数据集有近一百万行。这是一个简单的例子;
text=['abc USER@xxx.com 123 any@www foo @ bar 78@ppp @5555 aa@111www','anontalk.com']
text=pd.Series(text)
srhc=text.str.findall('www')
srhc
输出是;
0 [www, www]
1 []
dtype: object
是否有可能有效地(即以编程方式)获取包含文本www
的索引列表。感谢您的帮助。
答案 0 :(得分:1)
我们可以用str
做contains
nonzero
srhc=text.str.contains('www').to_numpy().nonzero()[0]
srhc
Out[66]: array([0], dtype=int64)
答案 1 :(得分:1)
您可以使用text.index
过滤str.contains()
:
srhc = text.index[text.str.contains('www')]
print(srhc)
打印:
Int64Index([0], dtype='int64')
答案 2 :(得分:0)
要搜索特定的子字符串,请使用.str.contains()
;
text = ['abc USER@xxx.com', 'helowww', '123 any@www', 'foo www', '@5555 aa@111www', 'anontalk.com']
text = pd.Series(text)
text[text.str.contains('www')]
输出;
1 helowww
2 123 any@www
3 foo www
4 @5555 aa@111www
dtype: object
获取这些索引;
text[text.str.contains('www')].index.to_list()
# or this
text.index[text.str.contains('www')]
输出;
[1, 2, 3, 4]
答案 3 :(得分:0)
我认为进行列表理解来获取索引会更有效,特别是因为该系列的索引没有唯一或特殊之处
text=['abc USER@xxx.com 123 any@www foo @ bar 78@ppp @5555 aa@111www','anontalk.com']
#I use this to stay true to your question
text=pd.Series(text)
#this gets you the index/indices
#which is what you want, based on your question
[index for index, entry in enumerate(text) if 'www' in entry]
[0]