Управление часовым поясом в Polars groupby_dynamicPython

Программы на Python
Ответить
Anonymous
 Управление часовым поясом в Polars groupby_dynamic

Сообщение Anonymous »

Я изучаю поляры и столкнулся с неожиданным поведением (по крайней мере для меня), как показано ниже.

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

In [1]: import polars

In [2]: polars.__version__
Out[2]: '0.16.9'

In [3]: df = (
...:     polars.DataFrame(
...:         data={
...:             "timestamp": ["1970-01-01 00:00:00+01:00", "1970-01-01 01:00:00+01:00"],
...:             "value": [1, 1],
...:         }
...:     )
...:     .with_columns(
...:         polars.col("timestamp").str.strptime(
...:             polars.Datetime, fmt="%Y-%m-%d %H:%M:%S%:z"
...:         )
...:     )
...:     .with_columns(
...:         polars.col("timestamp").dt.convert_time_zone("UTC").alias("timestamp_utc")
...:     )
...: )

In [4]: df
Out[4]:
shape: (2, 3)
┌────────────────────────────┬───────┬─────────────────────────┐
│ timestamp                  ┆ value ┆ timestamp_utc           │
│ ---                        ┆ ---   ┆ ---                     │
│ datetime[μs, +01:00]       ┆ i64   ┆ datetime[μs, UTC]       │
╞════════════════════════════╪═══════╪═════════════════════════╡
│ 1970-01-01 00:00:00 +01:00 ┆ 1     ┆ 1969-12-31 23:00:00 UTC │
│ 1970-01-01 01:00:00 +01:00 ┆ 1     ┆ 1970-01-01 00:00:00 UTC │
└────────────────────────────┴───────┴─────────────────────────┘

In [5]: df.groupby_dynamic(
...:     index_column="timestamp", every="1d", closed="left"
...: ).agg(polars.col("value").count())
Out[5]:
shape: (2, 2)
┌────────────────────────────┬───────┐
│ timestamp                  ┆ value │
│ ---                        ┆ ---   │
│ datetime[μs, +01:00]       ┆ u32   │
╞════════════════════════════╪═══════╡
│ 1969-12-31 01:00:00 +01:00 ┆ 1     │
│ 1970-01-01 01:00:00 +01:00 ┆ 1     │
└────────────────────────────┴───────┘

In [6]: df.groupby_dynamic(
...:     index_column="timestamp_utc", every="1d", closed="left"
...: ).agg(polars.col("value").count())
Out[6]:
shape: (2, 2)
┌─────────────────────────┬───────┐
│ timestamp_utc           ┆ value │
│ ---                     ┆ ---   │
│ datetime[μs, UTC]       ┆ u32   │
╞═════════════════════════╪═══════╡
│ 1969-12-31 00:00:00 UTC ┆ 1     │
│ 1970-01-01 00:00:00 UTC ┆ 1     │
└─────────────────────────┴───────┘

Определение временной метки, кажется, правильно включает часовой пояс, что подтверждается преобразованием в UTC.
При повторной выборке по дням, хотя счетчик верен при работе с часовым поясом UTC (столбец timestamp_utc), я думаю, что столбец со столбцом временной метки не такой, каким он должен был агрегировать две строки в 1970-01-01 00:00:00+01:00.
Я что-то не понимаю?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/755 ... by-dynamic
Ответить

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

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

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

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

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