You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的Polars库为JSON输出添加新层级?

Polars保存DataFrame为带外层键的JSON格式

需要将Polars DataFrame保存为包含"Befs"外层键的JSON结构,而非默认的数组格式,以下是两种可行方案:

方法1:结合Python json模块(直观易理解)

先将DataFrame转为字典列表,构造目标层级结构后,用json模块写入文件或生成字符串:

import polars as pl
import json

df = pl.DataFrame({
    "id": [1, 2, 3, 4, 5],
    "variable1": [15, 25, 5, 10, 20],
    "variable2": [40, 30, 50, 10, 20],
})

# 可选:将id列重命名为ID(匹配期望输出的键名)
formatted_df = df.rename({"id": "ID"})
# 转为字典列表
records = formatted_df.to_dicts()
# 构造包含Befs键的外层结构
output = {"Befs": records}

# 保存到文件(带缩进美化)
with open("result.json", "w", encoding="utf-8") as f:
    json.dump(output, f, indent=4)

# 或者直接生成JSON字符串
json_str = json.dumps(output, indent=4)
print(json_str)

方法2:纯Polars操作(无需额外导入模块)

创建单行DataFrame,将原DataFrame转为struct数组作为"Befs"列的值,再调用write_json:

import polars as pl

df = pl.DataFrame({
    "id": [1, 2, 3, 4, 5],
    "variable1": [15, 25, 5, 10, 20],
    "variable2": [40, 30, 50, 10, 20],
})

(
    # 构造单行DataFrame,Befs列对应原DataFrame的struct数组
    pl.DataFrame({"Befs": [df.rename({"id": "ID"}).to_struct()]})
    # 写入JSON并开启缩进美化
    .write_json("result.json", indent=4)
)

你的尝试未成功的原因

之前用pl.struct()的写法,会把每一行数据包装成包含"Bef"字段的对象,最终生成的JSON是一个由{"Bef": "Bef", "id": ...}这类元素组成的数组,和你需要的「外层单个对象+Befs键对应数组」的结构完全不符。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:43:20