2024-10-02 02:39:15 发布
网友
我有一个数据帧df。我想从Max==45的tweets中提取hashtags:
df
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
我正在尝试这样的方法,但它给出的数据帧是空的:
熊猫身上有什么东西可以让我更快更有效地完成这个任务吗。在
您可以使用pd.Series.str.findall:
pd.Series.str.findall
这将返回lists的列
list
如果您想先筛选然后再查找,可以使用boolean indexing轻松完成:
boolean indexing
这里使用的regex是:
#.*?(?=\s|$)
要理解它,就把它分解:
#.*?
(?=\s|$)
如果有可能在一个单词的中间有#,而这个单词是而不是一个hashtag,则会产生您不希望出现的误报。在这种情况下,可以修改regex以包含lookbehind:
#
(?:(?<=\s)|(?<=^))#.*?(?=\s|$)
regex lookbehind断言句子的开头或空格必须位于#字符之前。在
您可以使用
^{1}$pd.Series.str.findall
:这将返回
list
s的列如果您想先筛选然后再查找,可以使用
^{pr2}$boolean indexing
轻松完成:这里使用的regex是:
要理解它,就把它分解:
#.*?
-对以hashtag开头的单词执行非贪婪匹配(?=\s|$)
-向前看单词的结尾或句子的结尾如果有可能在一个单词的中间有
#
,而这个单词是而不是一个hashtag,则会产生您不希望出现的误报。在这种情况下,可以修改regex以包含lookbehind:regex lookbehind断言句子的开头或空格必须位于
#
字符之前。在相关问题 更多 >
编程相关推荐