【发布时间】:2021-07-26 13:33:01
【问题描述】:
我正在尝试使用 api 调用数据并使用带有返回 json 的 for 循环创建数据帧。我能够创建第一个数据帧,但我的 for 循环只返回第一个 json -> 数据帧。经过几天的挣扎,我决定在这里向专家寻求指导..
import requests
import json
import pandas as pd
# create an Empty DataFrame object
df = pd.DataFrame()
# api header
headers = {"Accept": "application/json","Authorization": "api_secret"}
#email for loops
email_list = ["abc@gmail.com", "xyz@gmail.com"]
#supposed to read 2 emails in the list and append each df but only reads the first one...#
for i in email_list:
querystring = {"where":i}
response = requests.request("GET", "https://example.com/api/2.0/export", headers=headers, params=querystring)
with open('test.jsonl', 'w') as writefile:
writefile.write(response.text)
data = [json.loads(line) for line in open('test.jsonl', 'r')]
FIELDS = ["event"]
df = pd.json_normalize(data)[FIELDS]
df = df.append(df)
我想知道是否需要更改 df append 中的某些内容,但我无法确定需要更改的位置。非常感谢您!
【问题讨论】:
-
请先修复缩进,因为它无法运行
-
您是否检查过:a/ 您的文件包含预期的内容 b/ 您的
data数组包含预期的内容? -
你觉得这对
df = pd.json_normalize(data)[FIELDS] df = df.append(df)有什么作用?尤其是第二行? -
嗨@njzk2!很抱歉,但我对python真的很陌生。 1)你能指出缩进的哪一部分有问题吗?至于 3)我的意图是选择 [FIELDS] 中的特定字段并制作一个数据框并在 for 循环中使用 df.append 继续附加它。 2)是的,有内容!但即使我看到两个特定的 json 输出,它也没有附加。
-
只要确保此处的缩进与您正在运行的内容相匹配。
df = pd.json_normalize(data)[FIELDS]也创建了一个新的数据框。然后df = df.append(df)将其附加到自身。
标签: python arrays dataframe for-loop append