У меня большой фрейм данных, содержащий столбец 'Description'
.
Я собрал большой словарь списков, ключом которого является категория, а элементы - списки возможных (под) строк, содержащихся в столбце описания.Я хочу использовать словарь для классификации каждой записи в кадре данных на основе этого описания ... К сожалению, я не могу понять, как применить словарь списков для сопоставления с кадрами данных (кажется, что это будет своего рода смесьmap
, isin
и str.contains
но у меня не было радости).Я включил код для генерации набора данных модели ниже:
df = pd.DataFrame(np.random.randn(10, 1), columns=list('A'))
df['Description'] = ['White Ford Escort', 'Irish Draft Horse', 'Springer \
spaniel (dog)', 'Green Vauxhall Corsa', 'White Van', 'Labrador dog',\
'Black horse' ,'Blue Van','Red Vauxhall Corsa','Bear']
Этот набор данных модели в идеале должен быть каким-то образом сопоставлен со следующим словарем:
dict = {'Car':['Ford Escort','Vauxhall Corsa','Van'],
'Animal':['Dog','Horse']}
для создания нового столбца вфрейм данных, с таким результатом:
| | A | Description | Type |
|---|----------------------|------------------------|--------|
| 0 | -1.4120290137842615 | White Ford Escort | Car |
| 1 | -0.3141036399049358 | Irish Draft Horse | Animal |
| 2 | 0.49374344901643896 | Springer spaniel (dog) | Animal |
| 3 | 0.013654965767323723 | Green Vauxhall Corsa | Car |
| 4 | -0.18271952280002862 | White Van | Car |
| 5 | 0.9519081000007026 | Labrador dog | Animal |
| 6 | 0.403258571154998 | Black horse | Animal |
| 7 | -0.8647792960494813 | Blue Van | Car |
| 8 | -0.12429427259820519 | Red Vauxhall Corsa | Car |
| 9 | 0.7695980616520571 | Bear | - |
Числа здесь явно не имеют значения, но в фреймах данных есть другие столбцы, и я хотел, чтобы это было отражено.Я счастлив использовать регулярное выражение или, возможно, изменить свой словарь на фрейм данных и выполнить объединение (я рассмотрел несколько маршрутов).
Это похоже на недавний вопрос ,но это не то же самое, и, конечно, ответ не помог мне.
Извините, если я где-то был глуп, и это действительно просто - кажется, что так и должно быть, но я что-то упустил.
Спасибо