【问题标题】:Reading a JSON in python and converting it to dataframe在 python 中读取 JSON 并将其转换为数据框
【发布时间】:2016-10-09 09:06:22
【问题描述】:

假设我有一个如下的 JSON 文件,

{u'level': u'INFO',
 u'message': {"method":"someMethod","params":{"frameId":"9.6","loaderId":"3.2","requestId":"4.6"}}
u'timestamp': 654789L}

为了将其解析为数据框,对于第一级,我可以做到data[1]['level']data[1]['message']data[1]['timestamp']。但我想更深入地了解消息,我正在尝试data[1]['message']['method']data[1]['message']['params'],这让我出错。

TypeError: string indices must be integers

第一级和第二级的引号不同,第一级用单引号,第二级用双引号。谁能告诉我如何在这里访问方法或参数参数?也是将所有内容解析为数据框的最佳方式?

谢谢

【问题讨论】:

  • 尝试运行data[1].keys()data[1]['message'].keys()
  • data[1].keys() 给出 [u'timestamp', u'message', u'level'] 但 data[1]['message'].keys 给出 AttributeError: 'unicode '对象没有属性'keys'
  • 您的第一个示例不是 JSON,而是转换为字符串的 Python 字典。这也是错误的,因为您在第二行的两个 }} 之后缺少逗号。您还应该包含一个完整的(工作)代码示例,说明您正在尝试做什么,因为您所说的是错误与您的数据不匹配。

标签: python json pandas


【解决方案1】:

您可以使用pandas.read_json 这将自动将文件读入DataFrame。

import pandas as pd

data = pd.read_json('test.json')

但您在问题中显示的数据不是有效的 JSON 格式。有关正确的格式,请参阅此example。要检查您的文件是否为有效的 JSON 格式,您还可以使用此validator。数据的有效 JSON 格式如下所示:

[{
    "level": "INFO",
    "message": [{
        "method": "someMethod",
        "params": [{
            "frameId": "9.6",
            "loaderId": "3.2",
            "requestId": "4.6"
        }]
    }],
    "timestamp": "654789 L"
}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多