我需要/想要在熊猫中使用浮点索引,但是运行类似这样的命令时会遇到键盘错误:
inds = [1.1, 2.2]
cols = [5.4, 6.7]
df = pd.DataFrame(np.random.randn(2, 2), index=inds, columns=cols)
df[df.index[0]]
我已经看到一些有关精度的错误,但这不行吗?
答案 0 :(得分:1)
之所以得到KeyError
,是因为df[df.index[0]]
在这种情况下将尝试访问带有标签1.1
的列-在此不存在。
您可以使用loc
或iloc
访问基于索引的行:
import numpy as np
import pandas as pd
inds = [1.1, 2.2]
cols = [5.4, 6.7]
df = pd.DataFrame(np.random.randn(2, 2), index=inds, columns=cols)
# to access e.g. the first row use
df.loc[df.index[0]]
# or more general
df.iloc[0]
# 5.4 1.531411
# 6.7 -0.341232
# Name: 1.1, dtype: float64
原则上,如果可以的话,请避免使用equal comparisons作为浮点数,原因是您已经遇到了:精度。显示给您的1.1
可能是计算机上的!= 1.1
-仅仅因为理论上这需要无限的精度。在大多数情况下,它会起作用,因为会进行某些公差检查。例如,如果比较数字的差为<10 ^ 6。