我試圖從tweet文本中篩選所有#
關鍵字。我使用str.extractall()
來提取關鍵字#
的所有關鍵字。 這是我第一次使用熊貓過濾來自tweetText的關鍵字。輸入,代碼,預期輸出和錯誤如下。Pandas給出的錯誤來自str.extractall('#')
輸入:
userID,tweetText
01, home #sweet home
01, #happy #life
02, #world peace
03, #all are one
04, world tour
等等...總的數據文件是GB大小刮鳴叫與其他幾列。但我只對兩列感興趣。
代碼:
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 <module>
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
在此先感謝您的幫助。過濾關鍵字的最簡單方法是什麼?
輸出更新:
在使用時只有此輸出像上面 s.name = "tweetText" data_1 = data[~data['tweetText'].isnull()]
在這種情況下輸出具有空[]
和用戶ID在仍然列,併爲那些具有關鍵字具有的陣列關鍵字而不是列表形式。
當僅使用此輸出我們什麼需要的,但與NAN
s.name = "tweetText"
data_2 = data_1.drop('tweetText', axis=1).join(s)
輸出這裏是正確的格式,但那些沒有關鍵字還沒有考慮,具有NAN
如果可能的話,我們得到忽略這樣的用戶ID,並且根本不顯示在輸出中。在下一階段,我試圖計算關鍵字的頻率,其中NAN
或空的[]
也將被計數,並且該頻率可能危及未來遠期的分類。
這可以創造奇蹟!非常感謝你......除了沒有關鍵字的'userID'的'Nan'外。這是我一直在努力的。 –
不客氣!如果'Nan'的表現不夠好,你可以使用'fillna'來填充你選擇的'Nan'。 – Abdou
不需要包含那些不包含'#關鍵字'的文件,但是是否可以在tweetText中添加其他關鍵字? –