为了账号安全,请及时绑定邮箱和手机立即绑定

在while循环中添加到pandas df

在while循环中添加到pandas df

慕容3067478 2021-09-11 16:07:22
我有一个看起来像这样的 df,叫做 full_senator_df:    Official Twitter    Senator         party0   SenShelby           Richard Shelby  Republican1   lisamurkowski       Lisa Murkowski  Republican2   SenDanSullivan      Dan Sullivan    Republican我已经编写了一些代码来使用这些数据来检索这些参议员的推文。是否可以将结果附加到表中或将结果作为 json 而不是它当前正在执行的打印?senator_count = 0num_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 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

以下代码创建了一个新的数据框(表),其中包含每方参议员的推文


# 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


查看完整回答
反对 回复 2021-09-11
?
心有法竹

TA贡献1866条经验 获得超5个赞

我想你快到了。如果你想保持循环,而不是打印,你可以将该数据加载到数据帧中。首先定义一个新的数据框


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


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信