【发布时间】:2020-01-17 23:38:38
【问题描述】:
我有这个功能:
def is_outlier(points, thresh=3.5):
if len(points.shape) == 1:
points = points[:, None]
median = np.nanmedian(points, axis=0)
diff = np.sum((points - median)**2, axis=-1)
diff = np.sqrt(diff)
med_abs_deviation = np.nanmedian(diff)
modified_z_score = 0.6745 * (diff / med_abs_deviation)
return modified_z_score > thresh
我想按模态列分组并选择其他 3 列并创建一个新列,该列具有来自上述识别异常值的函数的真假结果。
数据:
MODALITY COMP_FINAL_TAT ORD_FINAL_TAT UNREAD_FINAL_TAT ORD_UNREAD_TAT
0 MRI 12 394 5 389
1 CT 233 240 229 11
2 CT 204 205 188 16
3 RAD 245 302 243 59
4 RAD 240 297 238 59
5 RAD 234 291 232 59
6 RAD 236 294 235 59
7 MRI 170 -10 63 -73
8 RAD 239 296 237 59
9 RAD 251 256 251 4
10 RAD 147 176 146 29
11 MRI 25 -62 18 -80
12 MRI 527 -482 518 -1000
13 RAD 151 231 150 81
我想过这样做:outlierdf = df.groupby(['MODALITY'])['COMP_FINAL_TAT','ORD_FINAL_TAT','UNREAD_FINAL_TAT','ORD_UNREAD_TAT].transform(is_outlier)
我似乎无法弄清楚如何将真/假异常值结果添加为新列。
【问题讨论】: