我得到了一个简单的数据帧:
df
Out[102]:
0 1
0 nfp_zb 0.04325
1 ftb_zb 0.05645
2 ftb_cl 0.09055
3 cl_2 0.12865
4 ftb_gc 0.13385
5 cl_1 0.22795
6 cl_3 0.26985
7 es_3 0.37955
8 es_2 0.39450
9 zb_3 0.42170
10 es_1 0.45170
11 nfp_es 0.47190
12 zb_2 0.50130
13 nfp_cl 0.53170
14 nfp_gc 0.74260
15 gc_2 0.76640
16 gc_3 0.80915
17 zb_1 0.83010
18 gc_1 0.89795
我所要做的就是选择大于阈值a的值和小于阈值b的值,这两个值的范围是不重叠的。想象一下(大于85%和小于15%)。显然,这两个条件都是独立的。所以我是这样做的:
def filter(df):
df['filter'] = ""
df.loc[df[1] > 0.85, 'filter'] = 1
df.loc[df[1] < 0.15, 'filter'] = 1
df = df[df['filter'] == 1]
del df['filter']
return df
我得到了正确的答案:
filter(df)
Out[104]:
0 1
0 nfp_zb 0.04325
1 ftb_zb 0.05645
2 ftb_cl 0.09055
3 cl_2 0.12865
4 ftb_gc 0.13385
18 gc_1 0.89795
但是,我想知道是否有一个直接的方法来做到这一点,而不创建自定义公式。也许是使用groupby。。。。你知道吗
谢谢你的帮助
你可以试试测向查询在熊猫v0.13中添加了
您只需将所有条件放入
.loc
访问器中,用or运算符分隔:人们在其他答案中给出的建议应该同样有效,你只需翻转不平等,使用or而不是and。你知道吗
你可能想用布尔掩蔽。你知道吗
相关问题 更多 >
编程相关推荐