【发布时间】:2016-12-24 05:07:14
【问题描述】:
我有一个如下表格的数据框
Group Value
A 0.20
A 0.86
A 1.42
A 0.35
B 1.77
B 0.56
B 0.21
. .
. .
我想添加一列Alert,它采用两个可能的值:
- '1' 如果特定
Group的Value超过1 - thr百分位或小于每个特定Value的thr百分位Group,其中thr是用户-定义的阈值 - '0' 否则。
例如,假设Group A 中Value 的1 - thr 和thr 百分位数分别为1.0 和0.25;新列的对应值(我们称之为Alert)将是
Group Value Alert
A 0.20 1
A 0.86 0
A 1.42 1
A 0.35 0
我已经尝试了以下
def make_alert(x, thr):
if x >= np.percentile(x, 1 - thr) | x <= np.percentile(x, thr):
return 0
else:
return 1
pdf.groupby('Name').apply(lambda x: make_alert(x['Value'], AlertThr))
但是这不起作用,因为我的函数应用于相应列的每个元素,因此没有计算每个组的上限和下限。
有人可以提供有关如何执行此操作的提示吗?
【问题讨论】:
标签: python-2.7 pandas pandas-groupby