Создайте новые столбцы Polars путем сопоставления значений в строковом столбце (с разделителями) с помощью словаря.Python

Программы на Python
Ответить
Anonymous
 Создайте новые столбцы Polars путем сопоставления значений в строковом столбце (с разделителями) с помощью словаря.

Сообщение Anonymous »

Извините, если название сбивает с толку.
Я хорошо знаком с 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'
}
Я хотел бы создать новый столбец на основе типа еды, который имеет простой X или True или что-то в этом роде, если список «Пищевые продукты» содержит ключ dict.
Что-то вроде:



Индекс
Человек
Еда предоставляется
Фрукты
Овощи
Мясо
Десерт




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]))
Это наконец избавило меня от синтаксических ошибок, с которыми я сталкивался во всем, что пробовал. Однако, похоже, это вообще не работает. По сути, похоже, что он вообще не создает никаких новых столбцов. Я попытался добавить вызов my_df.glimse() во время каждой итерации цикла for, но размеры фрейма данных не меняются. Я не получаю никаких синтаксических ошибок или чего-либо еще. Я использую Jupyter Notebook, который может подавлять некоторые из них, но ячейка запускается и завершает работу почти мгновенно, что не соответствует ожидаемому результату.
Буду признателен за любую помощь. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/794 ... lumn-using
Ответить

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

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

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

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

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