Python Polars сопоставляет списки шаблонов в каждой строке ⇐ Python

Программы на Python
Anonymous
Python Polars сопоставляет списки шаблонов в каждой строке

Сообщение Anonymous »

У меня есть DataFrame со строками и еще один с шаблонами.

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

import polars as pl

df_str = pl.DataFrame({
"Strings": [
"Apples are red",
"Apples are not Bananas",
"Bananas are not red",
"I like Apples and Bananas",
"Oranges are kinda red",
]
})

df_pat = pl.DataFrame({
"Patterns": [
["Bananas", "red"],
["Apples"],
["Apples", "Bananas"]
]
})
Я хочу сопоставить каждый шаблон в шаблонах с каждой строкой в ​​строках. Что заданы в виде списка, что означает, что все слова из списка должны быть найдены, чтобы считать список найденным. Таким образом, результат должен выглядеть примерно так:

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

shape: (5, 3)
┌───────────────────────────┬───────────────┬─────────────────────────────────────┐
│ Strings                   ┆ matches_index ┆ matches                             │
│ ---                       ┆ ---           ┆ ---                                 │
│ str                       ┆ list[i64]     ┆ list[list[str]]                     │
╞═══════════════════════════╪═══════════════╪═════════════════════════════════════╡
│ Apples are red            ┆ [1]           ┆ [["Apples"]]                        │
│ Apples are not Bananas    ┆ [1, 2]        ┆ [["Apples"], ["Apples", "Bananas"]] │
│ Bananas are not red       ┆ [0]           ┆ [["Bananas", "red"]]                │
│ I like Apples and Bananas ┆ [1, 2]        ┆ [["Apples"], ["Apples", "Bananas"]] │
│ Oranges are kinda red     ┆ []            ┆ []                                  │
└───────────────────────────┴───────────────┴─────────────────────────────────────┘
Сейчас мое решение — перебирать шаблоны, объединять каждый список с помощью |, использовать

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

extract_all
для объединенного шаблона и проверьте, соответствует ли количество уникальных совпадений длине исходного списка шаблонов. Это работает, но, возможно, у кого-то есть идея, как реализовать это в собственных полярах (без iter_rows() по шаблонам).
Спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/769 ... -every-row

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