Я перешел с Pandas-Python на Polars и пытаюсь понять, как по сути рассчитать скользящую сумму за каждый день. Мне не нужна только общая сумма за каждый день, мне нужны общие суммы за каждый период времени (5-минутный период) каждый день в режиме «rolling_sum». Вот код, который у меня есть:
from datetime import datetime, timedelta
df = pl.DataFrame({
"date": pl.datetime_range(
datetime(1985, 1, 1),
datetime(1985, 1, 6),
timedelta(minutes=5),
time_unit="ns",
eager=True
)
})
df = df.with_columns(
A=pl.lit(2, dtype=pl.Int32)
)
df = (
df.lazy()
.rolling("date", period="1d")
.agg(
pl.col("A").sum().alias("A_daily")
)
.collect()
)
print(df[280:])
Это производит:
shape: (1_161, 2)
┌─────────────────────┬─────────┐
│ date ┆ A_daily │
│ --- ┆ --- │
│ datetime[ns] ┆ i32 │
╞═════════════════════╪═════════╡
│ 1985-01-01 23:20:00 ┆ 562 │
│ 1985-01-01 23:25:00 ┆ 564 │
│ 1985-01-01 23:30:00 ┆ 566 │
│ 1985-01-01 23:35:00 ┆ 568 │
│ 1985-01-01 23:40:00 ┆ 570 │
│ 1985-01-01 23:45:00 ┆ 572 │
│ 1985-01-01 23:50:00 ┆ 574 │
│ 1985-01-01 23:55:00 ┆ 576 │
│ 1985-01-02 00:00:00 ┆ 576 │
│ 1985-01-02 00:05:00 ┆ 576 │
│ 1985-01-02 00:10:00 ┆ 576 │
│ 1985-01-02 00:15:00 ┆ 576 │
│ 1985-01-02 00:20:00 ┆ 576 │
│ 1985-01-02 00:25:00 ┆ 576 │
│ 1985-01-02 00:30:00 ┆ 576 │
│ 1985-01-02 00:35:00 ┆ 576 │
│ 1985-01-02 00:40:00 ┆ 576 │
│ 1985-01-02 00:45:00 ┆ 576 │
│ 1985-01-02 00:50:00 ┆ 576 │
...
│ 1985-01-05 23:50:00 ┆ 576 │
│ 1985-01-05 23:55:00 ┆ 576 │
│ 1985-01-06 00:00:00 ┆ 576 │
└─────────────────────┴─────────┘
Я думаю, что на самом деле мне нужно, чтобы каждый день A_Daily сбрасывался, то есть выглядел так:
shape: (1_161, 2)
┌─────────────────────┬─────────┐
│ date ┆ A_daily │
│ --- ┆ --- │
│ datetime[ns] ┆ i32 │
╞═════════════════════╪═════════╡
│ 1985-01-01 23:20:00 ┆ 562 │
│ 1985-01-01 23:25:00 ┆ 564 │
│ 1985-01-01 23:30:00 ┆ 566 │
│ 1985-01-01 23:35:00 ┆ 568 │
│ 1985-01-01 23:40:00 ┆ 570 │
│ 1985-01-01 23:45:00 ┆ 572 │
│ 1985-01-01 23:50:00 ┆ 574 │
│ 1985-01-01 23:55:00 ┆ 576 │
│ 1985-01-02 00:00:00 ┆ 2 │ # !!!! CHANGE HERE !!!!
│ 1985-01-02 00:05:00 ┆ 4 │
│ 1985-01-02 00:10:00 ┆ 6 │
│ 1985-01-02 00:15:00 ┆ 8 │
│ 1985-01-02 00:20:00 ┆ 10 │
│ 1985-01-02 00:25:00 ┆ 12 │
│ 1985-01-02 00:30:00 ┆ 14 │
│ 1985-01-02 00:35:00 ┆ 18 │
│ 1985-01-02 00:40:00 ┆ 20 │
│ 1985-01-02 00:45:00 ┆ 22 │
│ 1985-01-02 00:50:00 ┆ 24 │
По сути, я хочу просто сбрасывать скользящую сумму каждый день. В Pandas я бы сделал это примерно так:
tn = outdata.groupby(pd.Grouper(freq='D', key='_daily_reset'))[
# '_vp_volume'].transform('cumsum')
Подробнее здесь: https://stackoverflow.com/questions/764 ... t-each-day
Polars - катится - Как сбросить счетчик каждый день? ⇐ Python
Программы на Python
-
Anonymous
1768828255
Anonymous
Я перешел с Pandas-Python на Polars и пытаюсь понять, как по сути рассчитать скользящую сумму за каждый день. Мне не нужна только общая сумма за каждый день, мне нужны общие суммы за каждый период времени (5-минутный период) каждый день в режиме «rolling_sum». Вот код, который у меня есть:
from datetime import datetime, timedelta
df = pl.DataFrame({
"date": pl.datetime_range(
datetime(1985, 1, 1),
datetime(1985, 1, 6),
timedelta(minutes=5),
time_unit="ns",
eager=True
)
})
df = df.with_columns(
A=pl.lit(2, dtype=pl.Int32)
)
df = (
df.lazy()
.rolling("date", period="1d")
.agg(
pl.col("A").sum().alias("A_daily")
)
.collect()
)
print(df[280:])
Это производит:
shape: (1_161, 2)
┌─────────────────────┬─────────┐
│ date ┆ A_daily │
│ --- ┆ --- │
│ datetime[ns] ┆ i32 │
╞═════════════════════╪═════════╡
│ 1985-01-01 23:20:00 ┆ 562 │
│ 1985-01-01 23:25:00 ┆ 564 │
│ 1985-01-01 23:30:00 ┆ 566 │
│ 1985-01-01 23:35:00 ┆ 568 │
│ 1985-01-01 23:40:00 ┆ 570 │
│ 1985-01-01 23:45:00 ┆ 572 │
│ 1985-01-01 23:50:00 ┆ 574 │
│ 1985-01-01 23:55:00 ┆ 576 │
│ 1985-01-02 00:00:00 ┆ 576 │
│ 1985-01-02 00:05:00 ┆ 576 │
│ 1985-01-02 00:10:00 ┆ 576 │
│ 1985-01-02 00:15:00 ┆ 576 │
│ 1985-01-02 00:20:00 ┆ 576 │
│ 1985-01-02 00:25:00 ┆ 576 │
│ 1985-01-02 00:30:00 ┆ 576 │
│ 1985-01-02 00:35:00 ┆ 576 │
│ 1985-01-02 00:40:00 ┆ 576 │
│ 1985-01-02 00:45:00 ┆ 576 │
│ 1985-01-02 00:50:00 ┆ 576 │
...
│ 1985-01-05 23:50:00 ┆ 576 │
│ 1985-01-05 23:55:00 ┆ 576 │
│ 1985-01-06 00:00:00 ┆ 576 │
└─────────────────────┴─────────┘
Я думаю, что на самом деле мне нужно, чтобы каждый день A_Daily сбрасывался, то есть выглядел так:
shape: (1_161, 2)
┌─────────────────────┬─────────┐
│ date ┆ A_daily │
│ --- ┆ --- │
│ datetime[ns] ┆ i32 │
╞═════════════════════╪═════════╡
│ 1985-01-01 23:20:00 ┆ 562 │
│ 1985-01-01 23:25:00 ┆ 564 │
│ 1985-01-01 23:30:00 ┆ 566 │
│ 1985-01-01 23:35:00 ┆ 568 │
│ 1985-01-01 23:40:00 ┆ 570 │
│ 1985-01-01 23:45:00 ┆ 572 │
│ 1985-01-01 23:50:00 ┆ 574 │
│ 1985-01-01 23:55:00 ┆ 576 │
│ 1985-01-02 00:00:00 ┆ 2 │ # !!!! CHANGE HERE !!!!
│ 1985-01-02 00:05:00 ┆ 4 │
│ 1985-01-02 00:10:00 ┆ 6 │
│ 1985-01-02 00:15:00 ┆ 8 │
│ 1985-01-02 00:20:00 ┆ 10 │
│ 1985-01-02 00:25:00 ┆ 12 │
│ 1985-01-02 00:30:00 ┆ 14 │
│ 1985-01-02 00:35:00 ┆ 18 │
│ 1985-01-02 00:40:00 ┆ 20 │
│ 1985-01-02 00:45:00 ┆ 22 │
│ 1985-01-02 00:50:00 ┆ 24 │
По сути, я хочу просто сбрасывать скользящую сумму каждый день. В Pandas я бы сделал это примерно так:
tn = outdata.groupby(pd.Grouper(freq='D', key='_daily_reset'))[
# '_vp_volume'].transform('cumsum')
Подробнее здесь: [url]https://stackoverflow.com/questions/76435153/polars-rolling-how-to-reset-count-each-day[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия