问题描述
我在使用Pandas Series时遇到问题:我创建了一个包含一些值的数组。为了测试目的,我试图确保在Series中存在某些值,所以我将其子集设置如下:
A = np.arange(start=-10,stop=10,step=0.1)
Aseries = pd.Series(A)
Aseries[Aseries.values == 9]
,这返回了一个空数组。但是我只需要将步长(从0.1更改为1),然后就可以使用...我已经仔细检查了Series确实包含了我要查找的值(两个步长值...)
#Generating an array conaining 200 values from -10 to 10 with a step of 0.1
A = np.arange(start=-10,step=0.1)
Aseries = pd.Series(A)
Aseries[Aseries.values == 9]
#Generating an array conaining 20 values from -10 to 10 with a step of 0.1
B = np.arange(start=-10,step=1)
Bseries = pd.Series(B)
print("'Aseries' having the value 9:")
print(Aseries[Aseries.values == 9])
print("'Bseries' having the value 9:")
print(Bseries[Bseries.values == 9])
输出:
'Aseries' having the value 9:
Series([],dtype: float64)
'Bseries' having the value 9:
19 9
dtype: int32
对这里发生的事情有任何想法吗?预先感谢!
[EDIT]:由于某种原因,我无法在此线程中添加任何其他帖子,因此,我将添加在这里找到的解决方案: 就像@Quang Hoang和@Kim Rop所解释的那样,非整数步长值不会真正返回其预期值。所以之后:
Aseries = pd.Series(A)
我只是添加了一个舍入指令,以使数组中的值仅保留小数点后一位,并且对子集操作进行了如下修改:
Aseries[(Aseries.values < 9.1) &(Aseries.values < 9.1)]
我不再遇到这个问题了……感谢@Quang Hoang和@Kim Rop