Учитывая DataFrame
a b c d
1 5 5 5 5
2 5 5 5 5
3 5 5 5 5
Я хотел бы добавить больше столбцов в DataFrame на основе существующих, но используя некоторую логику, которая не может вписаться в лямбду.Желаемый результат должен выглядеть примерно так:
a a_added c c_added d d_added
1 5 'good' 5 'good' 5 'bad'
2 5 'bad' 5 'good' 5 'bad'
3 5 'good' 5 'good' 5 'bad'
После просмотра этого ответа я предложил использовать DataFrame.apply()
в каждой строке и после этого Series.apply()
в каждом значении, ноЯ не знаю точно, как связать вызовы и что именно вернуть, чтобы я возвращал имя нового столбца из функции применения Series.После этого я думаю, что мне нужно объединить эти два DataFrames с DataFrame.join()
.Мне действительно нужно использовать Series.apply()
, потому что я должен вычислять каждое значение с некоторой пользовательской логикой.
РЕДАКТИРОВАТЬ: у меня есть карта пороговых значений, где ключи соответствуют именам столбцов в моем DataFrame и значенияпороги предупреждения / критического значения плюс операция, которая говорит, как текущее значение должно сравниваться с порогом:
thresholds = {
'a': {'warning': 90, 'critical': 98, operation: 'lt'},
'b': {'warning': 10, 'critical': 15, operation: 'gt'},
'c': {'warning': 5, 'critical': 9, operation: 'le'}
}
EDIT2: Использование следующего входа с пороговыми значениями выше:
a b c
1 89 0 4
2 91 9 10
3 99 17 5
будетполучить в результате:
a a_r b b_r c c_r
1 89 good 0 good 4 good
2 91 warn 9 warn 10 crit
3 99 crit 17 good 5 warn
Поэтому для каждого значения в зависимости от имени столбца я должен применить соответствующий порог с карты.