我有一个数据框 df
. 我想从推文中提取主题标签,其中Max == 45:
Max Tweets
42 via @VIE_unlike at #fashion
42 Ny trailer #katamaritribute #ps3
45 Saved a baby bluejay from dogs #fb
45 #Niley #Niley #Niley
我尝试这样的东西,但它给出了空的数据帧:
df.loc[df['Max'] == 45, [hsh for hsh in 'tweets' if hsh.startswith('#')]]
大熊猫有什么东西我可以用来有效和快速地执行这个 .
1 回答
你可以使用
pd.Series.str.findall
:这将返回
list
的列 .如果你想先过滤然后找到,你可以很容易地使用
boolean indexing
:这里使用的正则表达式是:
要理解它,分解它:
#.*?
- 对以#标签开头的单词执行非贪婪匹配(?=\s|$)
- 预言句子的结尾或句子的结尾如果你可能在一个不是标签的单词中间有
#
,那就会产生你不想要的误报 . 在这种情况下,您可以修改您的正则表达式以包含一个lookbehind:正则表达式后台断言,空格或句子的开头必须在
#
字符之前 .