Polars выдает исключение для пустого json, но Pandas работает

При чтении 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: []

Дело не в примитивности. Это дизайнерское решение. Вы имеете право с этим не согласиться.

Tim Roberts 16.08.2024 21:42

хорошо сказал @TimRoberts, у Pandas есть много дополнительных функций. кто знает, даже Полары могут развиваться со временем, в настоящее время они работают в соответствии со своим замыслом.

Lisan Al Gaib 16.08.2024 21:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
2
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Pandas является зрелой библиотекой, а Polars — сравнительно новой библиотекой. Существует проблема, аналогичная вашей, перейдите по этой ссылке на ошибку, Ссылка на выпуск Polars

Либо вы можете использовать обработку исключений с помощью поляров для этого сценария, либо использовать панды.

Обновление: проблема закрыта, вы работаете в Polars.

Мне нужны поляры для производительности, так как некоторые файлы JSON большие. для моего варианта использования лучше использовать try catch, чем pandas

Neo 16.08.2024 21:42

тем не менее, у панд меньше проблем, чем у поляров, и они охватывают более широкие функциональные возможности. Однако это зависит от вашего варианта использования и решения.

Lisan Al Gaib 16.08.2024 21:45

У Polars более высокие ограничения, чем у панд. Pandas здесь просто считывает тип объекта, что по сути означает: «мы не знаем, что это такое». В Polars мы должны возвращать тип структуры, поскольку наша система запросов должна иметь предсказуемые типы. Мы работаем в соответствии с этим ограничением, и пустые поля пока не допускаются в типе структуры Polars. Переход к объекту не разрешен в соответствии с ограничениями Polars.

ritchie46 17.08.2024 18:36

Проблема решена в Polars

Lisan Al Gaib 18.08.2024 16:40

Я вижу, что мы пропустили поддержку пустых полей в типе данных Struct. Это было добавлено в https://github.com/pola-rs/polars/pull/18249 и будет доступно в Polars 1.6 (примерно через неделю).

Другие вопросы по теме