Вычислить среднее значение группы для столбца int_range в кадре данных PolarsPython

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

Сообщение Anonymous »

Обновление. Эта проблема решена в Polars. Теперь код выполняется без ошибок.

У меня есть следующий код в полярах:

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

import datetime
import polars as pl

df = pl.DataFrame(
{
"id": [1, 2, 1, 2, 1, 2, 3],
"date": [
datetime.date(2022, 1, 1),
datetime.date(2022, 1, 1),
datetime.date(2022, 1, 11),
datetime.date(2022, 1, 11),
datetime.date(2022, 2, 1),
datetime.date(2022, 2, 1),
datetime.date(2022, 2, 1),
],
"value": [1, 2, 3, None, 5, 6, None],
}
)

(df.group_by_dynamic("date", group_by="id", every="1mo", period="1mo", closed="both")
.agg(
pl.int_range(1, pl.len() + 1)
- pl.int_range(1, pl.len() + 1).filter(pl.col("value").is_not_null()).mean(),
)
)
Но когда я запустил его, я получил следующую ошибку, которую я не совсем понимаю.

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

pyo3_runtime.PanicException: index out of bounds: the len is 1 but the index is 1
Я хочу добиться следующего: для каждой группы создать естественную последовательность от 1 до количества строк в этой группе и вычесть из нее среднее значение по ненулевому значению в столбец «значение» в этой группе. (возвратить значение null, если все «значения» в этой группе равны нулю).
Чтобы быть более конкретным, мне нужен следующий результат:

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

shape: (5, 3)
┌─────┬────────────┬──────────────────┐
│ id  ┆ date       ┆ arange           │
│ --- ┆ ---        ┆ ---              │
│ i64 ┆ date       ┆ list[f64]        │
╞═════╪════════════╪══════════════════╡
│ 1   ┆ 2022-01-01 ┆ [-1.0, 0.0, 1.0] │
│ 1   ┆ 2022-02-01 ┆ [0.0]            │
│ 2   ┆ 2022-01-01 ┆ [-1.0, 2.0, 1.0] │
│ 2   ┆ 2022-02-01 ┆ [0.0]            │
│ 3   ┆ 2022-02-01 ┆ [null]           │
└─────┴────────────┴──────────────────┘
Как этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/754 ... -dataframe
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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