Заполнить датафрейм по нескольким условиям (равно, содержит)

У меня есть исходная таблица (см.скрин). Мне нужно заполнить в ней значения type и sybtype на основе комплексных условий из Столбца 1 и Столбца 2. Для этого я составила что-то типа словаря (см.скрин) с условиями. Если (Столбец 1 = Условие 1) И (Столбец 2 СОДЕРЖИТ Условие 2), то заполнить соответствующе ячейки type и subtype.

Подскажите пожалуйста, как это можно реализовать?

Исходник: исходная таблица

Словарь: словаря

АПД: Решила циклом

total_cnt = len(dicto)
i=0
while i<total_cnt:
    now_df = dicto.loc[i]
    df.loc[(df['Столбец1'] == now_df['Условие1']) & (df['Столбец2'].str.contains(now_df['Условие2'])), 'type'] = now_df['type']
    df.loc[(df['Столбец1'] == now_df['Условие1']) & (df['Столбец2'].str.contains(now_df['Условие2'])), 'subtype'] = now_df['subtype']

    i+=1
    continue

Ответы (2 шт):

Автор решения: CrazyElf

Примерно так:

df.loc[(df['столбец1'] == 'условие1') & (df['столбец2'].str.contains('условие2')), 'type'] = 'что-то там'

Но если условий много, то тогда написать функцию, которая будет проверять условия и выдавать результат и через .apply её применить ко всем строкам.

→ Ссылка
Автор решения: Ksenia
total_cnt = len(dicto)
i=0
while i<total_cnt:
    now_df = dicto.loc[i]
    df.loc[(df['Столбец1'] == now_df['Условие1']) & (df['Столбец2'].str.contains(now_df['Условие2'])), 'type'] = now_df['type']
    df.loc[(df['Столбец1'] == now_df['Условие1']) & (df['Столбец2'].str.contains(now_df['Условие2'])), 'subtype'] = now_df['subtype']

    i+=1
    continue
→ Ссылка