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

Программы на Python
Ответить
Anonymous
 Ошибка Polars с использованием оконных агрегатных функций для столбцов десятичного типа.

Сообщение Anonymous »

Оконные агрегатные функции десятичных типов переводят десятичные дроби в целые числа
Я обнаружил ошибку в полярах (версия 1.21.0 в среде Python 3.10.8) при использовании оконных агрегатных функций. Они неправильно обрабатывают десятичные дроби, по сути умножая результат на 100. Вот минимальный воспроизводимый пример:

Код: Выделить всё

import polars as pl

pl.__version__   # 1.21.0

pl.DataFrame(
{
'People':['John', 'John', 'John', 'John', 'Jane', 'Jane', 'Jane', 'Jane'],
'Balance': [0.00, 10.59, 11.29, 0.00, 12.34, 23.45, 34.56, 45.67]
}
, schema={'People':pl.String, 'Balance':pl.Decimal(10, 2)}
).with_columns(
Bal_max = pl.col("Balance").max(),
Bal_max_person_wrong = pl.col("Balance").max().over("People"),
Bal_max_person_right = pl.col("Balance").cast(float).max().over("People"),
Bal_min_person_wrong = pl.col("Balance").min().over("People"),
Bal_sum_person_wrong = pl.col("Balance").sum().over("People")
)

Результаты ниже:
Изображение

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

Подробнее здесь: https://stackoverflow.com/questions/797 ... pe-columns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»