Объедините фрейм данных Polars со смещенной версией в один df, используя структуруPython

Программы на Python
Ответить
Anonymous
 Объедините фрейм данных Polars со смещенной версией в один df, используя структуру

Сообщение Anonymous »

У меня есть фрейм данных с историей цен на акции компаний по дате.

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

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     │
└──────┴─────┴───────┴──────────┘
""")
И еще один, где цены смещены на 2 единицы даты.

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

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     │
└──────┴──────┴───────┴──────────┘
Я хочу объединить две серии IBM в структуры в одном столбце IBM с полем для цены @ даты и цены сдвига (-2). Аналогично для Apple и т. д.

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

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
Ответить

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

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

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

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

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