Pandas 数据框仅返回 JSON 数据的第一行?

Posted

技术标签:

【中文标题】Pandas 数据框仅返回 JSON 数据的第一行?【英文标题】:Pandas Data frame returning only the first Row of JSON Data? 【发布时间】:2021-08-27 17:58:25 【问题描述】:

我正在使用 Twitter API 抓取数据,当我使用打印命令时,我可以看到我想要的所有数据,特别是我输入的推文行和日期。

但是,当我将数据格式化为 pandas 数据框/csv 时,它只显示第一行结果。我真的很困惑该怎么做,非常感谢所有的帮助。谢谢:)


#importing key term and date of tweets from twitter archive


client_key = 'code'
client_secret = 'code'

import base64

key_secret = ':'.format(client_key, client_secret).encode('ascii')
b64_encoded_key = base64.b64encode(key_secret)
b64_encoded_key = b64_encoded_key.decode('ascii')

import requests

base_url = 'https://api.twitter.com/'
auth_url = 'oauth2/token'.format(base_url)

auth_headers = 
    'Authorization': 'Basic '.format(b64_encoded_key),
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'


auth_data = 
    'grant_type': 'client_credentials'


auth_resp = requests.post(auth_url, headers=auth_headers, data=auth_data)
auth_resp.status_code

auth_resp.json().keys()

access_token = auth_resp.json()['access_token']

search_headers = 
    'Authorization': 'Bearer '.format(access_token)


search_params = 
    'q': 'Key Term',
    'count': 5,
    'start_time' : '2019-1-1',
    'end_time' : '2019-2-1',
    'place.fields' : 'USA',
    'lang' : 'en'



search_url = '1.1/search/tweets.json'.format(base_url)

search_resp = requests.get(search_url, headers=search_headers, params=search_params)

tweet_data = search_resp.json()

import numpy as np
import pandas as pd


for x in tweet_data['statuses']:

 data = 'Date':[(x['created_at'])],'Text':[(x['text'])]

df = pd.DataFrame(data)

df.to_csv("Tweet_data.csv")

print(df)

【问题讨论】:

【参考方案1】:

嘿,在您的循环定义 data=[] 之前,然后在您的循环中执行 data.append(…)。

您现在拥有的是一个循环,它在每次迭代时创建一个字典并将其分配给一个名为“data”的变量。覆盖之前的“数据”分配。

那么你正在编写一个只有一个“数据”行的 csv。

希望对您有所帮助!

【讨论】:

谢谢,这是有道理的,但我不太确定如何在执行中修复它,我对 python 还是很陌生 对不起,我在回答中解释错了,我想你会想把数据列成一个列表。例如。在你的 for 循环之前, data=[] 然后在你的循环里面做 data.append()

以上是关于Pandas 数据框仅返回 JSON 数据的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

无法将 JSON 转换为 pandas。所有数据都包含在一行中。我该如何解压它?

pandas使用groupby函数first函数last函数分别获得每个分组的第一行和最后一行数据(first/last row of each group in dataframe)

只用 pandas 获取每组的第一行和最后一行

将 pandas 数据框导出到 json 并返回到具有相同顺序的列的数据框

对熊猫数据框的深度嵌套 JSON 响应

求教pandas的dataframe索引值只有一行,用loc如何不返回series