Длина значений не соответствует длине индекса в Twitter API - PullRequest
0 голосов
/ 20 апреля 2020

я сталкиваюсь с ошибкой при получении данных из 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

Я думаю, что в идентификаторе или дате отсутствуют некоторые данные. Как можно игнорировать, если не указано значение, пожалуйста, сообщите об этом, спасибо

1 Ответ

0 голосов
/ 20 апреля 2020

Это сообщение об ошибке Length of values does not match length of index означает, что один из столбцов, которые вы пытаетесь добавить к кадру данных, не имеет ту же длину, что и исходный кадр данных. Если вы хотите отладить это, вы можете сохранить текст, идентификатор, дату, лайки и ретвиты в отдельные списки и сравнить их длину.

Глядя на ваш код в целом, было бы лучше перебрать курсор. Обратите внимание, что если вы сохраняете свой существующий код, вам не нужно преобразовывать все свои списки в 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)
...