繁体   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