Вернуть две ближайшие строки выше и ниже целевого значения в Polars.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Вернуть две ближайшие строки выше и ниже целевого значения в Polars.

Сообщение Anonymous »

Я пытаюсь найти наиболее элегантный способ в Polars найти в двух строках брекетинга (сначала сверху и снизу) конкретную цель. По сути, Min > 0 и Max < 0.
data = {
"strike": [5,10,15,20,25,30],
"target": [16] * 6,
}

df = (pl.DataFrame(data)
.with_columns(
diff = pl.col('strike') - pl.col('target')))

shape: (6, 3)
┌────────┬────────┬──────┐
│ strike ┆ target ┆ diff │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞════════╪════════╪══════╡
│ 5 ┆ 16 ┆ -11 │
│ 10 ┆ 16 ┆ -6 │
│ 15 ┆ 16 ┆ -1 │
│ 20 ┆ 16 ┆ 4 │
│ 25 ┆ 16 ┆ 9 │
│ 30 ┆ 16 ┆ 14 │
└────────┴────────┴──────┘

Это то, к чему я пытаюсь прийти.
shape: (2, 3)
┌────────┬────────┬──────┐
│ strike ┆ target ┆ diff │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞════════╪════════╪══════╡
│ 15 ┆ 16 ┆ -1 │
│ 20 ┆ 16 ┆ 4 │
└────────┴────────┴──────┘

Я могу сделать это с помощью двух отдельных операций фильтра, но я не могу связать их вместе и хотел бы избежать необходимости объединять два отдельных результата обратно в единые данные. если возможно, сделайте рамку.
df1 = (pl.DataFrame(data)
.with_columns(
diff = pl.col('strike') - pl.col('target'))
.filter((pl.col('diff') > 0)).min())

shape: (1, 3)
┌────────┬────────┬──────┐
│ strike ┆ target ┆ diff │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞════════╪════════╪══════╡
│ 20 ┆ 16 ┆ 4 │
└────────┴────────┴──────┘

df2 = (pl.DataFrame(data)
.with_columns(
diff = pl.col('strike') - pl.col('target'))
.filter((pl.col('diff') < 0)).max())

shape: (1, 3)
┌────────┬────────┬──────┐
│ strike ┆ target ┆ diff │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞════════╪════════╪══════╡
│ 15 ┆ 16 ┆ -1 │
└────────┴────────┴──────┘



Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-polars
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Вернуть две ближайшие строки выше и ниже целевого значения в Polars.
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Вернуть две ближайшие строки выше и ниже целевого значения в Polars.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Вернуть две ближайшие строки выше и ниже целевого значения в Polars.
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Вернуть две ближайшие строки выше и ниже целевого значения в Polars.
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как напечатать строки выше и ниже определенного значения в столбце
    Гость » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость

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