Могу ли я создать два выражения и два столбца, где второй столбец ссылается на первый в той же строке? [дубликат]Python

Программы на Python
Ответить
Anonymous
 Могу ли я создать два выражения и два столбца, где второй столбец ссылается на первый в той же строке? [дубликат]

Сообщение Anonymous »

У меня есть следующая база данных из FRED API:
self.yielddiff_lf
shape: (9, 5)
┌────────────┬────────────────────────────┬──────────┬──────────┬─────────────┐
│ statistic ┆ Date ┆ 5y Rate ┆ 1y Rate ┆ Rate Spread │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 ┆ f64 ┆ f64 │
╞════════════╪════════════════════════════╪══════════╪══════════╪═════════════╡
│ count ┆ 82 ┆ 82.0 ┆ 82.0 ┆ 82.0 │
│ mean ┆ 2023-03-02 08:29:16.097000 ┆ 3.737073 ┆ 4.740244 ┆ -1.003171 │
│ std ┆ null ┆ 0.267561 ┆ 0.220112 ┆ 0.145185 │
│ min ┆ 2023-01-03 ┆ 3.36 ┆ 4.19 ┆ -1.29 │
│ 25% ┆ 2023-02-01 ┆ 3.54 ┆ 4.64 ┆ -1.12 │
│ 50% ┆ 2023-03-03 ┆ 3.66 ┆ 4.71 ┆ -1.03 │
│ 75% ┆ 2023-03-31 ┆ 3.93 ┆ 4.88 ┆ -0.92 │
│ max ┆ 2023-04-28 ┆ 4.34 ┆ 5.25 ┆ -0.6 │
└────────────┴────────────────────────────┴──────────┴──────────┴─────────────┘

Я пытаюсь создать столбец, который представляет собой разброс ставок (5y / числитель) минус 1y (знаменатель).

Затем я хочу создать столбец увеличения % на основе этого разброса ставок.
У меня есть следующий код, который выдает ошибку «polars.Exceptions.ColumnNotFoundError: разброс ставок»
Попытка #1 выдает ошибку: Polars.Exceptions.ColumnNotFoundError: Разброс ставок
self.yielddiff_lf = self.yielddiff_lf.with_columns(
(
(pl.col(f"{numerator} Rate") - pl.col(f"{denominator} Rate"))
.round(3).alias("Rate Spread")
),
(
pl.col("Rate Spread").pct_change().alias("Spread % Change")*100)
)

Попытка №2 дает один столбец с именем «Процент изменения спреда», и я понимаю, почему:
self.yielddiff_lf = self.yielddiff_lf.with_columns(
(
(pl.col(f"{numerator} Rate") - pl.col(f"{denominator} Rate"))
.round(3).alias("Rate Spread")
).pct_change().alias("Spread % Change")*100
)

как мне создать эти два столбца в одном операторе с помощью LazyFrame от Polar?
Попытка № 1 приводит к ошибке: Polars.Exceptions.ColumnNotFoundError: Rate Spread
self.yielddiff_lf = self.yielddiff_lf.with_columns(
(
(pl.col(f"{numerator} Rate") - pl.col(f"{denominator} Rate"))
.round(3).alias("Rate Spread")
),
(
pl.col("Rate Spread").pct_change().alias("Spread % Change")*100)
)

Попытка № 2 дает один столбец с именем «Процент изменения спреда», и я понимаю, почему, но я хочу сохранить столбцы «Разброс ставок» и «% изменения»:
self.yielddiff_lf = self.yielddiff_lf.with_columns(
(
(pl.col(f"{numerator} Rate") - pl.col(f"{denominator} Rate"))
.round(3).alias("Rate Spread")
).pct_change().alias("Spread % Change")*100
)


Подробнее здесь: https://stackoverflow.com/questions/788 ... mn-referen
Ответить

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

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

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

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

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