代码之家  ›  专栏  ›  技术社区  ›  mon

pandas-read_json的orient参数是什么?

  •  0
  • mon  · 技术社区  · 3 年前

    pandas.read_json 朝向 参数,但不确定文档试图解释什么。

    请帮助理解它的作用。

    方向:str

    指示所需的JSON字符串格式。to_JSON()可以使用相应的orient值生成兼容的JSON字符串。一组可能的定向是:

    • “split”:类似dict的{index->[index],column->[columns],data->,[values]}
    • “记录”:类似于列表的[{column->value},…,{column->value}]
    • “index”:类似dict的{index->{column->value}}
    • “columns”:类似dict的{column->{index->value}}
    • “values”:仅值数组

    通过更改参数测试了下面的JSON,但不确定它在做什么。 orient=index 引发错误 AttributeError: 'list' object has no attribute 'values' orient='split' 投掷 AttributeError:“list”对象没有属性“values” 错误,但不知道它在抱怨什么。

    data = """[
    {
        "glossary": {
            "title": "example glossary",
            "GlossDiv": {
                "title": "S",
                "GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
                        "SortAs": "SGML",
                        "GlossTerm": "Standard Generalized Markup Language",
                        "Acronym": "SGML",
                        "Abbrev": "ISO 8879:1986",
                        "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
                            "GlossSeeAlso": ["GML", "XML"]
                        },
                        "GlossSee": "markup"
                    }
                }
            }
        }
    },
    {
        "glossary": {
            "title": "example glossary 2",
            "GlossDiv": {
                "title": "K",
                "GlossList": {
                    "GlossEntry": {
                        "ID": "XML",
                        "SortAs": "XML",
                        "GlossTerm": "eXtensible Markup Language",
                        "Acronym": "XML",
                        "Abbrev": "ISO ",
                        "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
                            "GlossSeeAlso": ["GML", "XML"]
                        },
                        "GlossSee": "markup"
                    }
                }
            }
        }
    }
    ]
    
    pd.read_json(
        data,
        orient='value'
    )
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   Valdi_Bo    3 年前

    您的案例似乎不适合 read_json

    要理解何时使用每个方位,请查阅 该方法的文档 ( https://pandas.pydata.org/docs/reference/api/pandas.read_json.html )。

    在您的情况下,您可以从以下方面开始:

    result = pd.json_normalize(json.loads(data))
    

    ( import json 需要)。

    这个函数至少可以正确地向下钻取JSON输入的结构。

    类似的方法,省略第一级( 术语汇编 )根据列名, 是:

    wrk = pd.read_json(data)
    df = pd.json_normalize(wrk.glossary)