При чтении json из файлов использование поляров дает исключение, если json пуст. Но у панд все по-другому. У меня есть несколько файлов только с ключом, а не со значением.
Поляры все еще примитивны и не повзрослели, как панды? какой пакет использовать?
Полярные регионы
from io import StringIO
import polars as pl
print(pl.read_json(StringIO('{"key":{}}')))
дает исключение
pyo3_runtime.PanicException: called `Result::unwrap()` on an `Err` value: ComputeError(ErrString("a StructArray must contain at least one field"))
Панды
from io import StringIO
import pandas as pd
print(pd.read_json(StringIO('{"key":{}}')))
работает без исключения, выдает результат как
Empty DataFrame
Columns: [key]
Index: []
хорошо сказал @TimRoberts, у Pandas есть много дополнительных функций. кто знает, даже Полары могут развиваться со временем, в настоящее время они работают в соответствии со своим замыслом.
Pandas является зрелой библиотекой, а Polars — сравнительно новой библиотекой. Существует проблема, аналогичная вашей, перейдите по этой ссылке на ошибку, Ссылка на выпуск Polars
Либо вы можете использовать обработку исключений с помощью поляров для этого сценария, либо использовать панды.
Обновление: проблема закрыта, вы работаете в Polars.
Мне нужны поляры для производительности, так как некоторые файлы JSON большие. для моего варианта использования лучше использовать try catch, чем pandas
тем не менее, у панд меньше проблем, чем у поляров, и они охватывают более широкие функциональные возможности. Однако это зависит от вашего варианта использования и решения.
У Polars более высокие ограничения, чем у панд. Pandas здесь просто считывает тип объекта, что по сути означает: «мы не знаем, что это такое». В Polars мы должны возвращать тип структуры, поскольку наша система запросов должна иметь предсказуемые типы. Мы работаем в соответствии с этим ограничением, и пустые поля пока не допускаются в типе структуры Polars. Переход к объекту не разрешен в соответствии с ограничениями Polars.
Проблема решена в Polars
Я вижу, что мы пропустили поддержку пустых полей в типе данных Struct
. Это было добавлено в https://github.com/pola-rs/polars/pull/18249 и будет доступно в Polars 1.6 (примерно через неделю).
Дело не в примитивности. Это дизайнерское решение. Вы имеете право с этим не согласиться.