熊猫数据框浮点索引不一致

时间:2019-12-12 12:36:19

标签: python-3.x pandas dataframe indexing

我需要/想要在熊猫中使用浮点索引,但是运行类似这样的命令时会遇到键盘错误:

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]]

我已经看到一些有关精度的错误,但这不行吗?

1 个答案:

答案 0 :(得分:1)

之所以得到KeyError,是因为df[df.index[0]]在这种情况下将尝试访问带有标签1.1的列-在此不存在。

您可以使用lociloc访问基于索引的行:

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。