Реализация следующей логики для целей разработки функций.Простой подход прост, но интересно, есть ли более эффективное решение, о котором каждый может подумать.Идеи приветствуются, если вам не хочется реализовывать весь код!
Возьмите этот DataFrame и словарь
import pandas as pd
random_animals = pd.DataFrame(
{'description':['xdogx','xcatx','xhamsterx','xdogx'
,'xhorsex','xdonkeyx','xcatx']
})
cat_dict = {'category_a':['dog','cat']
,'category_b':['horse','donkey']}
Мы хотим создать столбец / функцию для каждой строки в словаре Идля каждой категории.1, если строка содержится в description
столбце 0. в противном случае.
Таким образом, выходные данные для этого игрушечного примера будут выглядеть следующим образом:
description is_dog is_cat is_horse is_donkey is_category_a is_category_b
0 xdogx 1 0 0 0 1 0
1 xcatx 0 1 0 0 1 0
2 xhamsterx 0 0 0 0 0 0
3 xdogx 1 0 0 0 1 0
4 xhorsex 0 0 1 0 0 1
5 xdonkeyx 0 0 0 1 0 1
6 xcatx 0 1 0 0 1 0
Простой подход будет повторяться один раз для каждого выходного столбцаобязательный и работающий (для каждого столбца просто жестко закодированный is_dog здесь для простоты)
random_animals['is_dog'] = random_animals['description'].str.contains('dog')*1
В cat_dict
может быть произвольное количество строк и категорий, поэтому мне интересно, есть ли способ сделатьэто иначе.