Добавьте столбец в Polars DataFrame на основе группового агрегирования другого столбца.Python

Программы на Python
Anonymous
Добавьте столбец в Polars DataFrame на основе группового агрегирования другого столбца.

Сообщение Anonymous »

У меня есть LazyFrame времени, символы и middle_price:
Пример:

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

time                symbols             mid_price
datetime[ns]        str                 f64
2024-03-01 00:01:00 "PERP_SOL_USDT@…    126.1575
2024-03-01 00:01:00 "PERP_WAVES_USD…    2.71235
2024-03-01 00:01:00 "SOL_USDT@BINAN…    126.005
2024-03-01 00:01:00 "WAVES_USDT@BIN…    2.7085
2024-03-01 00:02:00 "PERP_SOL_USDT@…    126.3825
Я хочу выполнить некоторые статистические вычисления по временному измерению (например, сгруппировать по символу):

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

aggs = (
df
.group_by('symbols')
.agg([
pl.col('mid_price').diff(1).alias("change"),
])
)
Я получаю список каждого значения по уникальным символам value:

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

>>> aggs.head().collect()

symbols             change
str                 list[f64]
"SOL_USDT@BINAN…    [null, 0.25, … -0.55]
"PERP_SOL_USDT@…    [null, 0.225, … -0.605]
"WAVES_USDT@BIN…    [null, -0.002, … -0.001]
"PERP_WAVES_USD…    [null, -0.00255, … 0.0001]
Теперь я хотел бы снова присоединить это к исходному фрейму данных:

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

df = df.join(
aggs,
on='symbols',
how='left',
)
Теперь в каждой строке отображается полный список изменений, а не соответствующее значение.

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

>>> df.head().collect()

time                symbols             mid_price   change
datetime[ns]        str                 f64         list[f64]
2024-03-01 00:01:00 "PERP_SOL_USDT@…    126.1575    [null, 0.225, … -0.605]
2024-03-01 00:01:00 "PERP_WAVES_USD…    2.71235     [null, -0.00255, … 0.0001]
2024-03-01 00:01:00 "SOL_USDT@BINAN…    126.005     [null, 0.25, … -0.55]
2024-03-01 00:01:00 "WAVES_USDT@BIN…    2.7085      [null, -0.002, … -0.001]
2024-03-01 00:02:00 "PERP_SOL_USDT@…    126.3825    [null, 0.225, … -0.605]
У меня есть 2 вопроса:
  • Как мне разложить/развернуть списки, возвращенные из моего group_by, при объединении их обратно в исходный фрейм данных?
  • Это рекомендуемый способ добавить новый столбец в исходный фрейм данных из group_by (то есть: group_by, за которым следует присоединиться)?


Подробнее здесь: https://stackoverflow.com/questions/782 ... another-co

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