Estou usando Polars para processar um DataFrame para poder salvá-lo como JSON. Sei que posso usar o método .write_json()
, no entanto, gostaria de adicionar um novo nível ao JSON.
Minha abordagem atual:
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()
)
Saída de corrente:
'[{"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}]'
Mas eu gostaria de salvá-lo dessa forma, com a chave "Befs", para que cada "Befs" contenha todos os registros do DataFrame.
Saída desejada:
{
"Befs": [
{
"ID ": 1,
"variable1": 15,
"variable2": 40
},
{
"ID ": 2,
"variable1": 25,
"variable2": 30
}
]
}
Tentei usar .pl.struct()
, mas minhas tentativas não fazem sentido:
(
df
.select(
pl.struct(
pl.lit("Bef").alias("Bef"),
pl.col("id"),
pl.col("variable1"),
pl.col("variable2")
)
)
.write_json()
)
A
write_json()
função sempre retorna os dados em um formato orientado a linhas, no qual o elemento raiz é uma lista e cada linha contém um mapeamento decolumn_name -> row_value
Como solução alternativa, você pode usar
write_ndjson()
, já que seu elemento raiz é um dicionário (para cada linha), mas para que isso corresponda à saída desejada, você terá que implodir tudo em uma única linha e envolvê-la em uma struct.