Я сталкиваюсь с ComputeError при попытке создать Polars DataFrame из данных. Сообщение об ошибке:
ComputeError: could not append value: 1.41431 of type: f64 to the builder; make sure that all rows have the same schema or consider increasing infer_schema_length it might also be that a value overflows the data-type's capacity
Вот соответствующая часть моего кода с использованием воспроизводимого примера json (test.json):
import json
import pandas as pd
import polars as pl
response = requests.get('https://github.com/user-attachments/files/16026717/test.json')
res = json.loads(response.text)
df_pd = pd.DataFrame(res) # Creating DataFrame using Pandas (works fine)
df = pl.DataFrame(res) # Creating DataFrame using Polars (raises the error)
Я ожидал, что строка pl.DataFrame(res) будет работать аналогично строке pd.DataFrame(res), но она вызывает упомянутую ошибку. Я также заметил, что подобная ошибка обсуждалась в закрытом выпуске GitHub для Polars, но я все еще сталкиваюсь с этой ошибкой, несмотря на использование последней версии Polars (0.20.31).
Кто-нибудь сталкивался с подобной проблемой или имеет какие-либо идеи о том, как ее решить?
Я проверил типы значений в res, и они кажутся согласованными. Я также пробовал другие вещи, такие как округление чисел с плавающей запятой до 5 знаков после запятой или увеличение infer_schema_length
, но они не работали, и я снова получил ту же ошибку.
без примера единственное, что я могу попробовать, это pl.DataFrame(res, orient='row')
. Если это не сработает, вам придется предоставить минимальный и воспроизводимый пример res
, который не работает.
@DeanMacGregor Я создал воспроизводимый пример в test.json
и обновил вопрос. Ошибка все еще существует, вы можете это проверить. Я также открыл проблему в Polars GitHub: ссылка
pl.DataFrame(res, orient = "row", infer_schema_length=None)
работает?
Да, спасибо @jqurious. Установка infer_schema_length
на None
решает проблему.
Проблема решилась установкой infer_schema_length
на None
, благодаря jqurious
pl.DataFrame(res, infer_schema_length=None)
Кажется, ошибка возникла, потому что значение infer_schema_length
по умолчанию равно 100. Однако в наших данных тип этого столбца не может быть определен до тех пор, пока строка не станет больше 100.
В выпуске GitHub я предложил изменить описание ошибки, чтобы пользователи могли легко отлаживать свой код, установив для параметра значение None
.
Можете ли вы проверить, экстраполируют ли некоторые значения десятичные дроби или что-то в этом роде? Просто возьмите столбец за столбцом и дважды проверьте, какие значения не поместятся в f64.