Как извлечь значения структуры в список в полярахPython

Программы на Python
Anonymous
 Как извлечь значения структуры в список в полярах

Сообщение Anonymous »

У меня есть конвейер, который извлекает группы регулярных выражений из текстового столбца Polars, и я хочу отображать текст и совпадения в потоке st.table. При условии, что столбец, содержащий совпадения, представляет собой List[str], это хорошо работает с потоком, но поляры extract_groups возвращают структуру (понятно, поскольку группам регулярных выражений можно дать имя).
Приведенный ниже код работает, но есть ли способ сделать это без использования Map_elements? В общем, групп совпадений может быть 0, 1 или более, и я хотел бы сохранить выходной тип dtype list[str] для совместимости с потоком.
import polars as pl

dataframe = pl.DataFrame([{"text":"ABC"}, {"text":"123"}])

regexp = r'^.*(\d+).*$'
dataframe = dataframe.with_columns(regexp_match=pl.col("text").str.extract_groups(regexp)).filter(pl.col("regexp_match").struct["1"].is_not_null())
dataframe.with_columns(
regexp_match = pl.struct(["regexp_match"]).map_elements(lambda x: list(x['regexp_match'].values()), return_dtype=pl.List(str))
)

shape: (1, 2)
┌──────┬──────────────┐
│ text ┆ regexp_match │
│ --- ┆ --- │
│ str ┆ list[str] │
╞══════╪══════════════╡
│ 123 ┆ ["3"] │
└──────┴──────────────┘


Подробнее здесь: https://stackoverflow.com/questions/774 ... -in-polars

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