Python Tweepy-使用tweet字符串填充pandas数据帧列时出现错误144
我正在使用twitter ID填充数据帧中的一些行。我第一次运行脚本时没有使用except,但出现了错误: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
[{'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”。有没有可能或者我需要分解成更小的步骤?