Python 数据帧中的奇怪值

Python 数据帧中的奇怪值,python,pandas,floating-point,range,Python,Pandas,Floating Point,Range,我有一个数据帧df,它包含一个特性“下限”、“上限”和“步长” “上限”包含5个唯一值,例如: In [1] df['Upper Bound'].unique() Out [1] array([ 0.3 , 0. , 0.2 , 0.1 , 0.15]) 然而,当我访问df中的特定位置时,实际值是不同的。例如: In [2] df.iloc[1]['Upper Bound'] Out [2] 0.29999999999999999 这个问题在整个df中随处可见。例如,我试图生成

我有一个数据帧df,它包含一个特性“下限”、“上限”和“步长”

“上限”包含5个唯一值,例如:

In [1]
df['Upper Bound'].unique()

Out [1]
array([ 0.3 ,  0.  ,  0.2 ,  0.1 ,  0.15])
然而,当我访问df中的特定位置时,实际值是不同的。例如:

In [2]
df.iloc[1]['Upper Bound']

Out [2]
0.29999999999999999
这个问题在整个df中随处可见。例如,我试图生成这些数组的列表(“资产”),每个数组表示“步长”从“下限”到“上限”的值范围

df的第一行是[0.1,0.3,0.1]。然而,上述操作的结果是:

Out[3]
[[0.1, 0.2, 0.30000000000000004],
...

有什么好处

这是由于浮点精度和输出的显示格式。如果您试图执行某种相等操作,则应使用
np.isclose
,以避免ambiguities@EdChum谢谢我正在尝试执行相等操作。例如,尝试仅选择上面总和为1的置换:[如果总和(项)==1,则itertools.product(*assets)中的项对应于项]。在这种情况下,如何使用np.isclose?如果np.isclose(sum(item),1),则添加此
。any()
应work@EdChum-谢谢,我会的@GPB这是由于浮点精度和输出格式的显示方式。如果您试图执行某种相等操作,则应使用
np.isclose
,以避免ambiguities@EdChum谢谢我正在尝试执行相等操作。例如,尝试仅选择上面总和为1的置换:[如果总和(项)==1,则itertools.product(*assets)中的项对应于项]。在这种情况下,如何使用np.isclose?如果np.isclose(sum(item),1),则添加此
。any()
应work@EdChum-谢谢,我会的@GPB
Out[3]
[[0.1, 0.2, 0.30000000000000004],
...