【问题标题】:convert json to dataframe in for loops in python在python中的for循环中将json转换为数据帧
【发布时间】: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


【解决方案1】:
df = pd.json_normalize(data)[FIELDS]
df = df.append(df)

每次都覆盖数据框,在追加之前创建一个新的:

df2 = pd.json_normalize(data)[FIELDS]
df = df.append(df2)

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多