Найти индекс в столбце списка на основе другого столбца в Python PolarsPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Найти индекс в столбце списка на основе другого столбца в Python Polars

Сообщение Anonymous »

Мой минимальный пример — Dataframe с двумя столбцами: первый столбец — это дата, а второй столбец — список дат, где даты в каждой строке уникальны. Список дат во втором столбце уже отсортирован (в порядке возрастания).
Цель состоит в том, чтобы найти наименьший индекс (i) столбца 2, где дата в столбце 1 меньше чем i-й элемент списка в каждой строке.

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

import polars as pl
from datetime import date

pl.Config(fmt_table_cell_list_len=10, fmt_str_lengths=80) # repr

df = pl.DataFrame({
'ref_date': [ date(2023, 9, 10), date(2023, 5, 15) ],
'date_list': [
[ date(2023, 1, 1), date(2023, 5, 1), date(2023, 12, 31) ],
[ date(2023, 4, 15), date(2023, 6, 18), date(2023, 12, 1) ]
]
})
df

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

shape(2, 2)
┌─────────────┬────────────────────────────────────────┐
│ ref_date    ┆ date_list                              │
│ ---         ┆ ---                                    │
│ date        ┆ list[date]                             │
╞═════════════╪════════════════════════════════════════╡
│ 2023-09-10  ┆ [2023-01-01, 2023-05-01, 2023-12-31]   │
│ 2023-05-15  ┆ [2023-04-15, 2023-06-18, 2023-12-01]   │
└─────────────┴────────────────────────────────────────┘
В этом примере результат Dataframe должен быть:

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

shape(2, 3)
┌─────────────┬────────────────────────────────────────┬──────┐
│ ref_date    ┆ date_list                              ┆ i    │
│ ---         ┆ ---                                    ┆ ---  │
│ date        ┆ list[date]                             ┆ u32  │
╞═════════════╪════════════════════════════════════════╪══════╡
│ 2023-09-10  ┆ [2023-01-01, 2023-05-01, 2023-12-31]   ┆ 2    │
│ 2023-05-15  ┆ [2023-04-15, 2023-06-18, 2023-12-01]   ┆ 1    │
└─────────────┴────────────────────────────────────────┴──────┘
Что я пробовал
Используя list.eval(), у меня есть решение, но оно не требует pl.col в качестве входных данных. По сути, ввод ref_date фиксирован (т. е. выражение pl.lit), аналогично решениям, предложенным для этого вопроса SO.
Другой подход, который работает, использует разнесение, но было бы неплохо увидеть решение на основе list.eval.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Pythonic способ обновления столбца фрейма данных Polars на основе условия соответствия из другого столбца
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Фильтрация списка на основе значений другого списка в Polars
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Фильтрация списка на основе значений другого списка в Polars
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Фильтрация списка на основе значений другого списка в Polars
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Фильтрация списка на основе значений другого списка в Polars
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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