Добавьте столбец в 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
Ответить

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

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

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

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

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