我正在使用 Polars 处理 DataFrame,以便可以将其保存为 JSON。我知道我可以使用该方法.write_json()
,但是我想向 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],
})
(
df.write_json()
)
电流输出:
'[{"id":1,"variable1":15,"variable2":40},{"id":2,"variable1":25,"variable2":30},{"id":3,"variable1":5,"variable2":50},{"id":4,"variable1":10,"variable2":10},{"id":5,"variable1":20,"variable2":20}]'
但是我想以这种方式保存它,使用“Befs”键,因此每个“Befs”都包含 DataFrame 的每个记录。
期望输出:
{
"Befs": [
{
"ID ": 1,
"variable1": 15,
"variable2": 40
},
{
"ID ": 2,
"variable1": 25,
"variable2": 30
}
]
}
我曾尝试使用.pl.struct()
,但我的尝试毫无意义:
(
df
.select(
pl.struct(
pl.lit("Bef").alias("Bef"),
pl.col("id"),
pl.col("variable1"),
pl.col("variable2")
)
)
.write_json()
)
该
write_json()
函数总是以行格式返回数据,其中根元素是一个列表,每行包含一个映射column_name -> row_value
您可以使用一种 hacky 解决方法
write_ndjson()
,因为它的根元素是一个字典(对于每一行),但为了匹配所需的输出,您必须将所有内容分解为一行并将其包裹在一个结构体周围。