Polars:Polars 中有类似 json_normalize 的功能吗?

Shi*_*ran 15 python python-polars

我浏览了 Polars 的整个文档,但找不到任何可以将嵌套 json 转换为数据帧的内容。

test = {
  "name": "Ravi",
  "Subjects": {
    "Maths": 92,
    "English": 94,
    "Hindi": 98
  }
}
Run Code Online (Sandbox Code Playgroud)

pandas 中的 json_normalize 会通过将列命名为 name、Subjects.Maths、Subjects.English 和Subjects.Hindi 将其转换为数据框。那么这在 Polars 有可能吗?我确实尝试了所有功能,但它总是抛出错误,因为它不理解嵌套结构。

Luc*_*uca 8

对于简单的类似 JSON 的字典,您可以使用理解列表将值转换为值列表。

\n

下面是一个例子:

\n
grades = {\n  "name": "Ravi",\n  "Subjects": {\n    "Maths": 92,\n    "English": 94,\n    "Hindi": 98\n  }}\n\ngrades_with_list = {key:[value] for key, value in grades.items()}\npl.DataFrame(grades_with_list)\n\n# Output\nshape: (1, 2)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 name \xe2\x94\x86 Subjects   \xe2\x94\x82\n\xe2\x94\x82 ---  \xe2\x94\x86 ---        \xe2\x94\x82\n\xe2\x94\x82 str  \xe2\x94\x86 struct[3]  \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 Ravi \xe2\x94\x86 {92,94,98} \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n# You can also un-nest the Subjets column, to get a separate column for each subject.\n\npl.DataFrame(grades_with_list).unnest('Subjects')\n\n# Output\nshape: (1, 4)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 name \xe2\x94\x86 Maths \xe2\x94\x86 English \xe2\x94\x86 Hindi \xe2\x94\x82\n\xe2\x94\x82 ---  \xe2\x94\x86 ---   \xe2\x94\x86 ---     \xe2\x94\x86 ---   \xe2\x94\x82\n\xe2\x94\x82 str  \xe2\x94\x86 i64   \xe2\x94\x86 i64     \xe2\x94\x86 i64   \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 Ravi \xe2\x94\x86 92    \xe2\x94\x86 94      \xe2\x94\x86 98    \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n
Run Code Online (Sandbox Code Playgroud)\n


小智 3

不,没有,据我所知,建议使用 pandas 函数,然后将 pandas 数据帧加载到 Polars 中。