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

如何在Polars DataFrame中添加行的JSON格式列?

解决方案

完全可以用Polars内置函数实现需求,无需依赖json.dumps这类外部函数,性能更优。核心思路是利用Polars的结构体(struct)类型和内置的JSON编码方法:

实现步骤

  • 将整行数据打包成结构体列(自动以原列名为键)
  • 用Polars内置的json_encode()方法将结构体转成JSON字符串
  • 保留需要的列 + 新生成的JSON列

代码示例

import polars as pl

# 构造示例输入DataFrame(对应CSV读取后的结果)
df_input = pl.DataFrame({
    "time": [100, 200, 300],
    "var1": [1, 2, 3],
    "var2": [4, 5, 6]
})

# 生成JSON列并保留指定列
df_output = df_input.with_columns(
    # 将所有列打包为结构体,再转成JSON字符串
    json_per_row=pl.struct(pl.all()).json_encode()
).select(
    # 选择需要保留的列 + 新生成的JSON列
    "time", "json_per_row"
)

print(df_output)

输出结果

shape: (3, 2)
┌──────┬───────────────────────────────────────────┐
│ time ┆ json_per_row                             │
│ ---  ┆ ---                                       │
│ i64  ┆ str                                       │
╞══════╪═══════════════════════════════════════════╡
│ 100  ┆ {"time":100,"var1":1,"var2":4}            │
│ 200  ┆ {"time":200,"var1":2,"var2":5}            │
│ 300  ┆ {"time":300,"var1":3,"var2":6}            │
└──────┴───────────────────────────────────────────┘

关键细节说明

  • pl.struct(pl.all()):自动捕获当前DataFrame的所有列,打包成结构体类型,无需硬编码列名或列数
  • .json_encode():Polars原生的结构体转JSON方法,完全在内部优化执行,性能远高于Python层面的json.dumps循环
  • 如果需要仅用部分列生成JSON,只需把pl.all()换成指定列列表(比如pl.col(["var1", "var2"]))即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:52:46