我对pandas到json的转换有点生疏了. 我有一个这样的pandas数据框,用于一个虚构的库:

userId visitId readingTime Books BookType
u1 1 300 book1,book2,book3 Fiction
u2 1 400 book4,book5 Horror
u2 2 250 book6 Romance

需要创建一个json,如下所示:

{
  "visitSummary": {
    "u1": [
      {
        "readingTime": 300,
        "Books": [
          "book1",
          "book2",
          "book3"
        ],
        "BookType": "Fiction"
      }
    ],
    "u2": [
      {
        "readingTime": 400,
        "Books": [
          "book4",
          "book5"
        ],
        "BookType": "Horror"
      },
      {
        "readingTime": 250,
        "Books": [
          "book6"
        ],
        "BookType": "Romance"
      }
    ]
  }
}

我正在考虑使用嵌套循环并处理每一行.我希望,有一种更简单的毒蛇疗法来做到这一点.

使用Python3.10和Pandas 2.1.4

推荐答案

splitgroupbyto_dict:

out = {
    "visitSummary":
    (df.assign(Books=df["Books"].str.split(","))
       .groupby("userId").apply(lambda g: g.drop(
         columns=["userId", "visitId"]).to_dict("records")).to_dict())
}

发帖主题:Re:Kolibrios

import json; print(json.dumps(out, indent=4))
{
    "visitSummary": {
        "u1": [
            {
                "readingTime": 300,
                "Books": [
                    "book1",
                    "book2",
                    "book3"
                ],
                "BookType": "Fiction"
            }
        ],
        "u2": [
            {
                "readingTime": 400,
                "Books": [
                    "book4",
                    "book5"
                ],
                "BookType": "Horror"
            },
            {
                "readingTime": 250,
                "Books": [
                    "book6"
                ],
                "BookType": "Romance"
            }
        ]
    }
}

Python相关问答推荐

跳过包含某些键的字典

Django:如何将一个模型的唯一实例创建为另一个模型中的字段

如何对行使用分段/部分.diff()或.pct_change()?

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

Python主进程和分支进程如何共享gc信息?

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

比较两个二元组列表,NP.isin

使用Keras的线性回归参数估计

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

标题:如何在Python中使用嵌套饼图可视化分层数据?

Pandas 都是(),但有一个门槛

使用groupby Pandas的一些操作

如何在Python数据框架中加速序列的符号化

如果值发生变化,则列上的极性累积和

未知依赖项pin—1阻止conda安装""

字符串合并语法在哪里记录

如何启动下载并在不击中磁盘的情况下呈现响应?

matplotlib + python foor loop

OpenGL仅渲染第二个三角形,第一个三角形不可见