我有一系列我希望限制在+1和-1范围内的值。
s = pd.Series(np.random.randn(10000))
我知道我可以使用apply
,但是有一种简单的矢量化方法吗?
s_ = s.apply(lambda x: min(max(x, -1), 1))
s_.head()
0 -0.256117
1 0.879797
2 1.000000
3 -0.711397
4 -0.400339
dtype: float64
答案 0 :(得分:4)
使用clip
:
s = s.clip(-1,1)
示例输入:
s = pd.Series([-1.2, -0.5, 1, 1.1])
0 -1.2
1 -0.5
2 1.0
3 1.1
示例输出:
0 -1.0
1 -0.5
2 1.0
3 1.0
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以使用between
系列方法:
In [11]: s[s.between(-1, 1)]
Out[11]:
0 -0.256117
1 0.879797
3 -0.711397
4 -0.400339
5 0.667196
...
注意:此会丢弃超出范围的值。
答案 3 :(得分:0)
还有一个建议:
s[s<-1] = -1
s[s>1] = 1