В Polars мы можем выбирать столбцы по их типу — см., например. Как выбрать столбцы по типу данных в Polars?
Однако я не могу понять, как выбрать столбцы datetime
. Из учебника Polars у нас есть этот пример:
import polars as pl
import datetime at dt
df_trades = pl.DataFrame(
{
"time": [
dt.datetime(2020, 1, 1, 9, 1, 0),
dt.datetime(2020, 1, 1, 9, 1, 0),
dt.datetime(2020, 1, 1, 9, 3, 0),
dt.datetime(2020, 1, 1, 9, 6, 0),
],
"stock": ["A", "B", "B", "C"],
"trade": [101, 299, 301, 500],
}
)
Типы столбцов печатаются следующим образом:
┌─────────────────────┬───────┬───────┐
│ time ┆ stock ┆ trade │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ str ┆ i64 │
Для столбца stock
мы можем использовать
df_trades.select(pl.col(pl.Utf8))
Но какой тип для столбца time
? Использование dt.datetime
вместо pl.Utf8
приводит к ошибке:
TypeError: аргумент «имя»: объект «тип» не может быть преобразован в «PyString»
Вы можете выбирать столбцы polars по типам данных, как вы это делали с pl.Utf8
, но вам нужно передать тип данных polars
, чтобы это работало, а не значение/объект python datetime.datetime
.
Ниже мы выбираем все типы данных даты и времени, которые имеют разрешение "us"
, передавая тип данных pl.Datetime("us")
.
import polars as pl
from datetime import datetime
df_trades = pl.DataFrame(
{
"time1": [
datetime(2020, 1, 1, 9, 1, 0),
datetime(2020, 1, 1, 9, 1, 0),
datetime(2020, 1, 1, 9, 3, 0),
datetime(2020, 1, 1, 9, 6, 0),
],
"time2": [
datetime(2020, 1, 1, 9, 1, 0),
datetime(2020, 1, 1, 9, 1, 0),
datetime(2020, 1, 1, 9, 3, 0),
datetime(2020, 1, 1, 9, 6, 0),
],
"stock": ["A", "B", "B", "C"],
"trade": [101, 299, 301, 500],
}
)
df_trades.select(
pl.col(pl.Datetime("us"))
)
shape: (4, 2)
┌─────────────────────┬─────────────────────┐
│ time1 ┆ time2 │
│ --- ┆ --- │
│ datetime[μs] ┆ datetime[μs] │
╞═════════════════════╪═════════════════════╡
│ 2020-01-01 09:01:00 ┆ 2020-01-01 09:01:00 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2020-01-01 09:01:00 ┆ 2020-01-01 09:01:00 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2020-01-01 09:03:00 ┆ 2020-01-01 09:03:00 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2020-01-01 09:06:00 ┆ 2020-01-01 09:06:00 │
└─────────────────────┴─────────────────────┘