Код: Выделить всё
import polars as pl
df = pl.from_repr("""
┌──────┬─────┬───────┬──────────┐
│ date ┆ ibm ┆ apple ┆ coinbase │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞══════╪═════╪═══════╪══════════╡
│ 1 ┆ 50 ┆ 100 ┆ 40 │
│ 2 ┆ 48 ┆ 200 ┆ 60 │
│ 3 ┆ 49 ┆ 400 ┆ 10 │
│ 4 ┆ 27 ┆ 800 ┆ 300 │
│ 5 ┆ 11 ┆ 1600 ┆ 7000 │
└──────┴─────┴───────┴──────────┘
""")
Код: Выделить всё
df_2 = df.shift(-2)
Код: Выделить всё
shape: (5, 4)
┌──────┬──────┬───────┬──────────┐
│ date ┆ ibm ┆ apple ┆ coinbase │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞══════╪══════╪═══════╪══════════╡
│ 3 ┆ 49 ┆ 400 ┆ 10 │
│ 4 ┆ 27 ┆ 800 ┆ 300 │
│ 5 ┆ 11 ┆ 1600 ┆ 7000 │
│ null ┆ null ┆ null ┆ null │
│ null ┆ null ┆ null ┆ null │
└──────┴──────┴───────┴──────────┘
Код: Выделить всё
shape: (5, 4)
┌──────┬───────────┬─────────────┬─────────────┐
│ date ┆ ibm ┆ apple ┆ coinbase │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ struct[2] ┆ struct[2] ┆ struct[2] │
╞══════╪═══════════╪═════════════╪═════════════╡
│ 1 ┆ {50,49} ┆ {100,400} ┆ {40,10} │
│ 2 ┆ {48,27} ┆ {200,800} ┆ {60,300} │
│ 3 ┆ {49,11} ┆ {400,1600} ┆ {10,7000} │
│ 4 ┆ {27,null} ┆ {800,null} ┆ {300,null} │
│ 5 ┆ {11,null} ┆ {1600,null} ┆ {7000,null} │
└──────┴───────────┴─────────────┴─────────────┘
Не знаю, с чего начать, так как кажется, что результирующий столбец IBM будет состоять не из двух серий, а из одной серии пар (исходных, смещенных) цен
Подробнее здесь: https://stackoverflow.com/questions/767 ... ing-struct
Мобильная версия