给定一个数据帧
a b c d
1 5 5 5 5
2 5 5 5 5
3 5 5 5 5
我想在现有列的基础上在DataFrame上添加更多的列,但是使用一些逻辑,这些逻辑不能放在lambda中。期望的结果应该如下所示:
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'
在看到this答案之后,我的想法是在每一行上使用DataFrame.apply()
,然后在每一个值上使用Series.apply()
,但我不知道如何链接调用和返回什么,因此我从序列的apply函数返回一个新的列名。之后,我想我需要将这两个数据帧与DataFrame.join()
结合起来。我真的需要使用Series.apply()
,因为我必须用一些自定义逻辑来计算每个值。你知道吗
编辑: 我有一个阈值映射,其中键对应于我的数据帧中的列名,值是警告/严重阈值,加上一个说明当前值应如何与阈值进行比较的操作:
thresholds = {
'a': {'warning': 90, 'critical': 98, operation: 'lt'},
'b': {'warning': 10, 'critical': 15, operation: 'gt'},
'c': {'warning': 5, 'critical': 9, operation: 'le'}
}
编辑2: 使用具有上述阈值的以下输入:
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
因此,对于每个值(取决于列名),我必须从映射中应用相应的阈值。你知道吗
用途:
相关问题 更多 >
编程相关推荐