簡體   English   中英

Tweepy - 使用推文字符串填充 Pandas 數據框列時出現錯誤 144

[英]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)

問題是,您的tryexcept設置在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM