Добавление в pandas df в цикле while

У меня есть 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

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

не могли бы вы выложить скриншот того, как выглядит вывод на печать?

oreopot 09.12.2018 06:21

Добавлено выходное изображение

Erin Nicole 09.12.2018 07:22

Итак, вы хотите объединить данные в один фрейм данных?

oreopot 09.12.2018 07:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
174
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

# 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

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

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"]

Другие вопросы по теме