0

我在从 twitter API 获取数据时遇到错误我正在尝试将数据保存到 pandas 数据框中

这是我的代码

posts = tweepy.Cursor(api.search, q =("SpaceX OR SolarCity OR Tesla OR Starlink OR Elon Musk") , 
                      lang="en",since = "2020-04-13",
                      tweet_mode="extended").items(500)
def tweets_to_data_frame(tweets):
        df = pd.DataFrame(data=[tweet.full_text for tweet in tweets], columns=['tweets'])

        df['id'] = np.array([tweet.id for tweet in tweets])
        df['date'] = np.array([tweet.created_at for tweet in tweets])


        return df
tweets_to_data_frame(posts)

这是我的错误信息:

Length of values does not match length of index

我认为 id 或 date 中缺少一些数据,如果有 n/a 值,我该如何忽略,请您对此提出建议,谢谢

4

1 回答 1

0

此错误消息Length of values does not match length of index意味着您尝试添加到数据帧的列之一与原始数据帧的长度不同。如果你想调试这个,你可以将文本、id、日期、喜欢和转发保存到单独的列表中并比较长度。

从整体上看你的代码,最好迭代游标。请注意,如果您保留现有代码,则无需将所有列表转换为 np.array,因为 pandas 会为您执行此操作。

def process_tweet(tweet, default_value=None):
    val = {}
    val['id'] = tweet.id if tweet.id else default_value
    val['created_at'] = tweet.created_at if tweet.date else default_value
    val['likes'] = tweet.favorite_count if tweet.favorite_count else default_value
    val['retweets'] = tweet.retweet_count if tweet.retweet_count else default_value 
    return val

q = "SpaceX OR SolarCity OR Tesla OR Starlink OR Elon Musk"

posts = [process_tweet(tweet) for tweet in 
         tweepy.Cursor(api.search, q=(q), lang="en", since="2020-04-13", tweet_mode="extended").items(500)]

df = pd.DataFrame(posts)
于 2020-04-20T13:41:23.820 回答