You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何遍历Tweepy获取的推文数据后数据会消失?

解决Tweepy提取推文后重复循环数据消失的问题

问题根源:你用tweepy.Cursor获取的tweets是一次性迭代器,迭代器在完成一次循环遍历后,内部指针会指向末尾,再次循环时就没有数据可以取出,所以看起来“数据消失”了。

要实现基于同一批推文为DataFrame新增列,只需先把迭代器转成可重复访问的列表,保存原始推文数据,之后就能多次使用这个列表操作。

具体调整步骤:

  1. 将Cursor结果转为列表
    把Cursor调用结果转成列表,保存所有推文对象,后续可重复遍历:

    # 把Cursor返回的迭代器转为列表,保存原始推文数据
    tweets_list = list(tweepy.Cursor(api.search,
                   q=search_term,
                   since=str(t2)).items(10))
    
  2. 基于列表构建初始DataFrame
    用这个列表完成第一次循环,存入基础数据:

    import pandas as pd
    
    df = pd.DataFrame()
    # 第一次循环:提取基础字段存入DataFrame
    for tweet in tweets_list:
        df.loc[len(df)] = {
            'tweet_id': tweet.id,
            'text': tweet.text,
            'created_time': tweet.created_at
        }
    
  3. 基于同一列表新增列
    直接使用保存的tweets_list,提取需要的字段新增到DataFrame中,无需重新调用API:

    # 批量新增列:提取推文作者信息
    df['author_username'] = [tweet.user.screen_name for tweet in tweets_list]
    df['author_followers'] = [tweet.user.followers_count for tweet in tweets_list]
    
    # 循环方式新增(适合复杂字段提取)
    for idx, tweet in enumerate(tweets_list):
        df.loc[idx, 'retweet_count'] = tweet.retweet_count
        df.loc[idx, 'favorite_count'] = tweet.favorite_count
    

这样就能确保始终基于同一批推文数据操作,不会出现循环后数据消失的问题。

内容的提问来源于stack exchange,提问作者Enrique Penson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:06:18