英文:
Serialize Polars `dataframe` to `serde_json::Value`
问题
在Polars中,将DataFrame
序列化为JSON字符串非常简单:JsonWriter::new(dest).finish(&df)?
。
是否可以将其序列化为JSON Value — 一个serde_json::Value
,它是记录的Value::Array
?显然,我可以将JSON写入内存中的字符串,然后反序列化为serde_json::Value
。但我想知道是否有一种直接从DataFrame
到serde_json::Value
的路径。
这将大致等同于pandas的df.to_dict(orient="records")
。
英文:
In Polars, it is simple enough to serialize a DataFrame
to a json string: JsonWriter::new(dest).finish(&df)?
.
Is it possible to serialize to a json Value — a serde_json::Value
— that is the Value::Array
of records? Obviously, I could write the json to an in-memory string, then deserialize it into a serde_json::Value
. But I'm wondering if there is a direct path from DataFrame
to serde_json::Value
.
This would be the rough equivalent of pandas df.to_dict(orient="records")
.
答案1
得分: 2
你需要添加 serde
功能。
cargo add polars --features serde
use polars::prelude::*;
fn main() {
let df = df! {
"a" => [1,2,3,4,5],
}
.unwrap();
let df_json = serde_json::to_value(&df).unwrap();
println!("df_json {df_json}");
}
请注意,Polars实现了自定义的序列化和反序列化,它可能与提到的pandas等效方法不完全一致。
上述代码的JSON结果:
{
"columns": [
{
"datatype": "Int32",
"name": "a",
"values": [1,2,3,4,5]
}
]
}
英文:
You need to add the serde
feature.
cargo add polars --features serde
use polars::prelude::*;
fn main() {
let df = df! {
"a" => [1,2,3,4,5],
}
.unwrap();
let df_json = serde_json::to_value(&df).unwrap();
println!("df_json {df_json}");
}
Note, Polars implements a custom de/serialize, and it may not align with the pandas equivalent mentioned.
The JSON result from above:
{
"columns": [
{
"datatype": "Int32",
"name": "a",
"values": [1,2,3,4,5]
}
]
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论