我有一个包含多个值的z分数的数据框。它看起来像这样:
ID Cat1 Cat2 Cat3
A 1.05 -1.67 0.94
B -0.88 0.22 -0.56
C 1.33 0.84 1.19
我想编写一个脚本,告诉我哪些ID与每个类别中的值相对应,相对于我根据需要指定的截止值。因为我正在使用z分数,所以我需要将绝对值与我的截止值进行比较。
因此,如果我将截止值设置为0.75,则生成的数据帧将为:
Cat1 Cat2 Cat3
A A A
B C C
C
如果我将1.0设置为我的截止值:上面的数据帧将返回:
Cat1 Cat2 Cat3
A A C
C
我知道我可以这样查询:
df1 = df[df['Cat1'] > 1]
df1
df1 = df[df['Cat1'] < -1]
df1
单独查询每一列并找到我要查找的信息,但即使我弄清楚如何使用abs函数将两个查询合并为一个,这也很乏味。如何将此过滤应用于整个数据框?
我已经想出了这个剧本的骨架:
cut_off = 1.0
cols = list(df.columns)
cols.remove('ID')
for col in cols:
# FOR CELL IN VALUE OF EACH CELL IN COLUMN:
if (abs.CELL < cut_off):
CELL = NaN
基本上只是消除了任何不符合截止值的值。如果我可以让它发挥作用,它将使我更接近我的目标,但我陷入困境,甚至不知道我是否在正确的轨道上。同样,总体目标是快速确定哪些单元格具有高于每个类别中的截止值的绝对值能够列出相应的ID。
如果有什么令人困惑或模糊,我道歉;请在评论中告诉我,我会解决它。我今天大部分时间都试图解决这个问题,而且我的大脑有点油腻
答案 0 :(得分:2)
您不必将过滤应用于色谱柱,您也可以
df[df > 1]
,还有,
df[df > 1] = np.NaN