Добавление к пандам DF в то время как цикл - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть df, который выглядит примерно так: full_senator_df:

    Official Twitter    Senator         party
0   SenShelby           Richard Shelby  Republican
1   lisamurkowski       Lisa Murkowski  Republican
2   SenDanSullivan      Dan Sullivan    Republican

Я написал некоторый код для использования этих данных для получения твитов для каждого из этих сенаторов.Можно ли добавить результаты в таблицу или получить результаты в формате json, а не в той печати, которую они в данный момент делают?

senator_count = 0
num_senators = len(full_senator_df.index)

while senator_count <= num_senators:
    senator_official_twitter = full_senator_df['Official Twitter'][senator_count]
    tweets = api.user_timeline(screen_name = senator_official_twitter, count = tweet_num, include_rts = True)

    for status in tweets:
        print(full_senator_df['Senator'][senator_count], status.text, full_senator_df['party'][senator_count])

    senator_count += 1

Текущий вывод здесь

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

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

dfTweets = pd.DataFrame() # place this before your while loop
row_num = 0
while ...
...
    for status in tweets:
        dfTweets.loc[0, row_num] = full_senator_df['Senator'][senator_count]
        dfTweets.loc[1, row_num] = status.text, 
        dfTweets.loc[2, row_num] = full_senator_df['party'][senator_count]
        row_num += 1

dfTweets.columns = ["Senator", "tweet_text"]
0 голосов
/ 09 декабря 2018

Следующий код создает новый фрейм данных (таблицу) с твитами на каждого сенатора от каждой партии

# Create an empty dataframe stub to append to later
all_tweets_df = pd.DataFrame(columns=['Senator', 'Party', 'Tweet'])

# Iterate over the initial dataframe
for _, row in full_senator_df.iterrows():
    tweets = api.user_timeline(screen_name = row['Official Twitter'],
                               count = tweet_num,
                               include_rts = True)
    senator_tweets_df = pd.DataFrame({'Senator': row['Senator'],
                                      'Party': row['party'],
                                      'Tweet': tweets})
    # Append to the output
    all_tweets_df = pd.concat([all_tweets_df, senator_tweets_df], sort=True)

Выходные данные должны быть примерно такими:

        Party    Senator   Tweet
0  Republican     Shelby  tweet1
1  Republican     Shelby  tweet2
2  Republican     Shelby  tweet3
0  Republican  Murkowski  tweet1
1  Republican  Murkowski  tweet2
2  Republican  Murkowski  tweet3
0  Republican   Sullivan  tweet1
1  Republican   Sullivan  tweet2
2  Republican   Sullivan  tweet3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...