【问题标题】:Python convert JSON list to Pandas DataframePython 将 JSON 列表转换为 Pandas 数据框
【发布时间】:2021-09-27 18:04:04
【问题描述】:

我提出了一个 python 请求(curl),获得了这个 JSON 数组,我想将其转换为 Pandas Dataframe 甚至是 python 字典,以便稍后将其转换为 Pandas Dataframe,但没有任何效果......

当我尝试这样转换时:

import json
aDict = json.loads(response.text)
dataframe = pd.DataFrame.from_dict(aDict, orient="index")

编译器说:“AttributeError: 'list' object has no attribute 'values'”

response.text 的打印:

'[{"total":null,"items":[{"key":"time","label":"Time","value":"2021-07-14"},{"key ":"agent","label":"Agent","value":"name_of_agent"},...

【问题讨论】:

  • 您的aDict 不是字典而是列表?
  • 您正在传递pd.DataFrame.from_dict 一个列表,而不是一个字典,这是行不通的。相反,您应该做什么取决于数据的结构。您能否发布其余的响应文本,或者至少发布它的结尾,以便我们可以看到总体结构?
  • 在JSON库docs中有一个转换表。看到一个 JSON 数组被反序列化为一个 Python 列表。要将 JSON 导入字典以使用 pandas 进行处理,请调用 aDict[0]
  • 如果没有看到 json 对象的完整结构就很难判断。但你可以试试df = pd.json_normalize(aDict, 'items')
  • @Timus 是的,我的 aDict 是一个字典列表

标签: python arrays json pandas


【解决方案1】:
import json
import pandas as pd

aDict = json.loads('[{"total":null,"items":\
                  [{"key":"time","label":"Time","value":"2021-07-14"},\
                  {"key":"agent","label":"Agent","value":"name_of_agent"}]}]')

df = pd.DataFrame.from_dict(aDict[0]['items'])

df
    key label   value
0   time    Time    2021-07-14
1   agent   Agent   name_of_agent

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 2021-02-09
    • 2019-05-14
    • 1970-01-01
    • 2017-06-22
    • 2021-03-22
    • 2019-07-01
    • 2021-12-13
    • 2017-05-03
    相关资源
    最近更新 更多