[英]Tweepy - Error 144 when populating a pandas dataframe column with tweet strings
我正在使用 twitter ID 在數據框中填充一些行。 我第一次在沒有except的情況下運行腳本,但出現錯誤: [{'code': 144, 'message': 'No status found with that ID.'}]
我知道這可能是因為有人刪除了推文或其他原因。 然而,我需要繼續前進!
所以我使用了except: pass
,但它實際上沒有返回任何東西。 所有的行都是空的。 我一直在努力解決這個問題,但我不知道如何解決它。
我的數據框:
TweetID text pageType
index
id1 My code is not working http://blablabla.com
id2 451864165416 Nan twitter
id3 849849849844 Nan twitter
這是不返回任何內容的代碼:
try:
if (df['pageType'] == 'twitter').any:
df['text'] = df.tweetID.apply(lambda x: api.get_status(x).text)
except:
pass
就是這樣! 非常感謝!
我建議使用boolean index + loc
+ apply
:
mask = df['pageType'] == 'twitter'
df.loc[mask, 'text'] = df.loc[mask, 'twitterID']\
.apply(lambda x: api.get_status(x).text)
問題是,您的try
和except
設置在apply
完成之前停止執行,這反過來又不會創建新列。 通常,您會將這個子句放在for-loop
,就像您使用它的方式一樣。 相反,您可以創建一個自定義函數,以便它捕獲無效的tweetID
值的錯誤。
def GetStuff(value):
try:
return api.get_status(value).text
except:
return "ERROR"
df['text'] = df.tweetID.apply(lambda x: GetStuff(x))
要滿足評論中的條件:
選項1
def GetStuff(value):
try:
return api.get_status(value).text
except:
return "ERROR"
df['text'] = df.where(df.tweetID == 'twitter').tweetID.apply(lambda x: GetStuff(x))
其中應用了tweetID
== twitter
的函數,其他值為NaN
,您可以使用fillna()
替換為其他一些文本
選項 2
在GetStuff()
函數中構建條件。
def GetStuff(value):
if value == 'twitter':
try:
return api.get_status(value).text
except:
return "ERROR"
else:
return 'NotTwitter'
df['text'] = df.tweetID.apply(lambda x: GetStuff(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.