Заполнить датафрейм по нескольким условиям (равно, содержит)
У меня есть исходная таблица (см.скрин). Мне нужно заполнить в ней значения 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

