минимум из колонок на основе словаря
Есть словарь с перечнем определённых названий колонок, относящихся к определённому товару. И есть датафрейм, в котором имеются перечисленные в словаре колонке, а также другие колонки. Как получить в pandas колонку с минимальным значением по каждому товару только из колонок, которые имеются для этого товара в словаре?
import pandas as pd
slov={'Товар1':['Колонка1','Колонка3'],
'Товар2':['Колонка2','Колонка4']
}
df=pd.DataFrame({
'Колонка0':['Товар1','Товар2'],
'Колонка1':[20,25],
'Колонка2':[89,15],
'Колонка3':[26,30],
'Колонка4':[40,108],
'Колонка5':[55,2]
})
df["Мин"]=?
Я пробовала
df["Мин"]=df[df.columns[df.columns.isin(slov)]].min(axis=1)
но это не сработало, колонка заполняется значениями NaN
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
df["Мин"] = df.apply(lambda x: x.loc[slov[x['Колонка0']]].min(), axis=1)
df["МинКол"] = df.apply(lambda x: x.loc[slov[x['Колонка0']]].idxmin(), axis=1)
Колонка0 Колонка1 Колонка2 Колонка3 Колонка4 Колонка5 Мин МинКол
0 Товар1 20 89 26 40 55 20 Колонка1
1 Товар2 25 15 30 108 2 15 Колонка2