我有一个包含一些数值的数据框,例如:
col1 col2
0 1 3
1 -2 -4
2 3 -5
我希望有一个col3包含:
1 - 如果行中的所有值都> 0,
-1 - 如果行中的所有值都是<0和
0 - 对于所有其他情况
所以,我的结果df应如下所示:
col1 col2 col3
0 1 3 1
1 -2 -4 -1
2 3 -5 0
解决办法:用途numpy.select():
df['col3']=np.select([(df.gt(0).all(axis=1)),(df.lt(0).all(axis=1))],[1,-1],0)
print(df)
col1 col2 col3
0 1 3 1
1 -2 -4 -1
2 3 -5 0
说明作为文档说:
numpy.select(condlist,choicelist,default = 0)
返回从选择列表中的元素绘制的数组,具体取决于条件。
在此条件列表(df.gt(0).all(axis=1))以及(df.lt(0).all(axis=1))其中检查你所提到的2个条件。(为了更好的练习,您只需打印条件以检查输出)。休息时我们按顺序放置选项,这里是1和-1。最后一个参数是default,默认为零,您可以指定是否需要任何其他默认值。
表现:
%timeit np.select([(df.gt(0).all(axis=1)),(df.lt(0).all(axis=1))],[1,-1],0)
#414 µs ± 18.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)








暂无数据