pola-rs / nodejs-polars

nodejs front-end of polars
https://pola-rs.github.io/nodejs-polars/
MIT License
437 stars 44 forks source link

`toRecords` should support empty header fields #254

Open ad-si opened 3 months ago

ad-si commented 3 months ago

Have you tried latest version of polars?

What version of polars are you using?

0.14

What operating system are you using polars on?

macOS 14.6.1

What node version are you using

bun 1.1.21

Describe your bug

Using toRecords() on a dataframe with an empty header cell should work, but currently it throws an Error.

What are the steps to reproduce the behavior?

import pl from "nodejs-polars"

const csv =`"name",""
"John","green"
"Anna","red"
`
pl.readCSV(csv, { quoteChar: "\"" }).toRecords()
474 |             _df.writeCsv(writeStream, dest ?? options);
475 |             writeStream.end("");
476 |             return Buffer.concat(buffers);
477 |         },
478 |         toRecords() {
479 |             return _df.toObjects();
                             ^
error: Failed to set property with field ``
 code: "InvalidArg"
ad-si commented 3 months ago

As a workaround you can add a .withColumnRenamed("", "__EMPTY")

Edit: No, you can't because it will throw an error if the column name does not exist. 😮‍💨 Use this instead:

if (df.columns.includes("")) {
  df = df.withColumnRenamed("", "__EMPTY")
}
Bidek56 commented 2 months ago

It's strange b/c it works fine using Node v22.7.0 and in our tests, so I wonder if it's a Bun issue. Hmm @universalmind303 what do you think? Thx