python extractall函数_Pandas从str.extractall('#')中给出错误

我正试图过滤tweet文本中的所有#关键字。我使用str.extractall()来提取所有带有#关键字的关键字。

这是我第一次使用pandas从tweetText中过滤关键字。输入、代码、预期输出和错误如下所示。

输入:userID,tweetText

01, home #sweet home

01, #happy #life

02, #world peace

03, #all are one

04, world tour

等等。。。总的数据文件是用GB大小的scraped tweets和其他几列组成的。但我只对两个专栏感兴趣。

代码:import re

import pandas as pd

data = pd.read_csv('Text.csv', index_col=0, header=None, names=['userID', 'tweetText'])

fout = data['tweetText'].str.extractall('#')

print fout

预期产量:userID,tweetText

01,#sweet

01,#happy

01,#life

02,#world

03,#all

错误:Traceback (most recent call last):

File "keyword_split.py", line 7, in

fout = data['tweetText'].str.extractall('#')

File "/usr/local/lib/python2.7/dist-packages/pandas/core/strings.py", line 1621, in extractall

return str_extractall(self._orig, pat, flags=flags)

File "/usr/local/lib/python2.7/dist-packages/pandas/core/strings.py", line 694, in str_extractall

raise ValueError("pattern contains no capture groups")

ValueError: pattern contains no capture groups

提前谢谢你的帮助。根据用户id筛选关键字的最简单方法应该是什么?

输出更新:

当仅使用此选项时,输出如下

s.name = "tweetText"

data_1 = data[~data['tweetText'].isnull()]

本例中的输出是空的[],用户id仍在列表中,对于那些具有关键字的用户,有一个关键字数组而不是列表形式。

当仅使用此选项时,输出我们所需的内容,但使用NANs.name = "tweetText"

data_2 = data_1.drop('tweetText', axis=1).join(s)

这里的输出是正确的格式,但是那些没有关键字的输出还没有考虑并且没有

如果有可能的话,我们可以忽略这些用户ID,完全不显示在输出中。在接下来的阶段中,我试图计算关键字的频率,其中NAN或空的[]也将被计算在内,并且该频率可能会损害将来的分类。

你可能感兴趣的:(python,extractall函数)