Я хорошо знаком с Pandas и думаю, что у меня есть четкое представление о том, как бы я там это сделал. По сути, это просто грубая итерация и присвоение новых столбцов на основе индекса. Однако недавно я узнал о Polars и хочу попробовать его для распараллеливания/скорости, а также для того, чтобы оставаться в курсе своих навыков работы с данными. Это мой первый набег, и он прошел не очень хорошо.
У меня есть фрейм данных, и один столбец этого фрейма представляет собой, по сути, список тегов. Каждая ячейка в этом столбце представляет собой список соответствующих тегов. Я хочу просмотреть эти списки, строку за строкой, и добавить столбец по имени более общего тега, если существующий тег находится в ячейке.
Например, предположим, что у меня есть фрейм данных, который выглядит следующим образом:
Код: Выделить всё
import polars as pl
my_df = pl.from_repr("""
┌───────┬────────┬──────────────────┐
│ Index ┆ Person ┆ Food Provided │
│ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ str │
╞═══════╪════════╪══════════════════╡
│ 1 ┆ Billy ┆ Apple, Hot dog │
│ 2 ┆ Suzy ┆ Celery, brownies │
└───────┴────────┴──────────────────┘
""")
Код: Выделить всё
foodTypes_dict = {
'Apple': 'Fruit',
'Hot dog': 'Meat',
'Celery': 'Vegetable',
'brownies': 'Dessert'
}
Что-то вроде:
Индекс
Человек
Еда предоставляется
Фрукты
Овощи
Мясо
Десерт
1
Билли
Яблоко, Хот-дог
X
Нет
X
Нет
2
Сьюзи
Сельдерей, пирожные
Нет
X
Нет
X
Я пробовал:
Код: Выделить всё
for key in foodTypes_dict.keys():
my_df.with_columns((pl.col("Food Provided").str.contains(key)).alias(foodTypes_dict[key]))
Буду признателен за любую помощь. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/794 ... lumn-using
Мобильная версия