Estoy tratando de usar la biblioteca nodejs-polars pero encontré un problema al convertir un objeto javascript en un marco de datos polares .
Considere los siguientes datos por ejemplo
const myData = [ { "id": "a", "name": "fred", "country": "france", "age": 30, "city": "paris" // there's no "city" property elsewhere in `myData` }, { "id": "b", "name": "alexandra", "country": "usa", "age": 40 }, { "id": "c", "name": "george", "country": "argentina", "age": 50 } ]entonces si lo hacemos
const pl = require("nodejs-polars") const output = pl.DataFrame(myData)Obtenemos el error:
Error: las longitudes no coinciden: no se pudo crear un nuevo marco de datos de la serie. Las Series tienen diferentes duraciones
¿No hay forma de crear un marco de datos polares a partir de un objeto de modo que rellene automáticamente los valores faltantes con null ?
Si bien esto no se admite actualmente con pl.Dataframe , el comportamiento deseado se admite a través pl.readJSON . Si no le importa hacer una pequeña cantidad de preprocesamiento, esto se puede lograr fácilmente
const ndJSONData = myData .map(row => JSON.stringify(row)) .join("\n") // -1 will do a full scan, set to a length that best fits your use case. const df = pl.readJSON(ndJSONData, {"inferSchemaLength": -1}) Editar: esto ahora es compatible con versiones más nuevas de polars a través de readRecords . Los dtypes anidados tienen soporte limitado.
const df = pl.readRecords(myData, {inferSchemaLength: 10)