【问题标题】:Length of values does not match length of index in twitter API值的长度与 twitter API 中的索引长度不匹配
【发布时间】:2020-08-03 00:20:13
【问题描述】:

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

这是我的密码

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 值,我该如何忽略 请您对此提出建议 谢谢

【问题讨论】:

  • 您需要提供更详细的异常信息。
  • @RajatMishra 抱歉,我认为问题在于缺少一些可能有 ID 或日期的推文

标签: python pandas twitterapi-python


【解决方案1】:

此错误消息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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2018-12-19
    • 2020-05-29
    • 2020-06-02
    相关资源
    最近更新 更多