Python Tweepy-使用tweet字符串填充pandas数据帧列时出现错误144

Python Tweepy-使用tweet字符串填充pandas数据帧列时出现错误144,python,pandas,dataframe,tweepy,Python,Pandas,Dataframe,Tweepy,我正在使用twitter ID填充数据帧中的一些行。我第一次运行脚本时没有使用except,但出现了错误: [{'code':144,'message':'找不到具有该ID的状态。}] 我理解这可能是因为有人删除了推特或其他原因。然而,我需要继续前进 所以我使用了except:pass,但它实际上没有返回任何内容。所有的行都是空的。我一直在努力工作,但我不知道如何解决它 我的数据帧: TweetID text page

我正在使用twitter ID填充数据帧中的一些行。我第一次运行脚本时没有使用except,但出现了错误:
[{'code':144,'message':'找不到具有该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
就这样! 非常感谢

我建议使用布尔索引+
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
完成之前停止执行,而这又不会创建新列。通常,您会按照使用方法将此子句放置在循环的
中。相反,您可以创建一个自定义函数,以便它捕获无效的
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))

谢谢,@coldspeed。这看起来确实更好,但不幸的是,我也犯了同样的错误:干杯@MoniqueMarins不担心。我看到一个尝试,除了无法避免。我会在一点时间内提供修复,所以请稍候。谢谢。那很好。但是,我正在填写“文本”列,如果“页面类型”不是“twitter”,我不想返回“ERROR”。例如,我希望返回第1行中的字符串,并使用GetStuff函数查找和填充第2行和第3行。最后,如果它不起作用,那么我返回“ERROR”。有没有可能或者我需要分解成更小的步骤?