![](/img/trans.png)
[英]Change float index value to string index value in Pandas Series
[英]Pandas Series float index
我试图使用浮点数作为pandas系列的索引,但它似乎没有正常工作。 例如,在下面的代码中,当我尝试调用值策略[9.7]时,它返回错误。 我认为这是因为浮点数9.7在计算机中没有精确地存储为9.7(例如,9.7000000001)。 反正有没有绕过这个? 或者使用浮点索引根本不是一个好主意?
任何输入都非常感谢。 谢谢!
import numpy as np
import pandas as pd
W_grid = np.arange(100)*0.1
policy = pd.Series(np.random.rand(100), index = W_grid)
policy[9.7]
KeyError Traceback (most recent call last)
<ipython-input-224-89dfc3470c3d> in <module>()
----> 1 policy[9.7]
D:\Warren\Anaconda\lib\site-packages\pandas\core\series.pyc in __getitem__(self, key)
482 def __getitem__(self, key):
483 try:
--> 484 result = self.index.get_value(self, key)
485
486 if not np.isscalar(result):
D:\Warren\Anaconda\lib\site-packages\pandas\core\index.pyc in get_value(self, series, key)
2038
2039 k = _values_from_object(key)
-> 2040 loc = self.get_loc(k)
2041 new_values = series.values[loc]
2042 if np.isscalar(new_values) or new_values is None:
D:\Warren\Anaconda\lib\site-packages\pandas\core\index.pyc in get_loc(self, key)
2091 except (TypeError, NotImplementedError):
2092 pass
-> 2093 return super(Float64Index, self).get_loc(key)
2094
2095 @property
D:\Warren\Anaconda\lib\site-packages\pandas\core\index.pyc in get_loc(self, key)
1179 loc : int if unique index, possibly slice or mask if not
1180 """
-> 1181 return self._engine.get_loc(_values_from_object(key))
1182
1183 def get_value(self, series, key):
D:\Warren\Anaconda\lib\site-packages\pandas\index.pyd in pandas.index.IndexEngine.get_loc (pandas\index.c:3656)()
D:\Warren\Anaconda\lib\site-packages\pandas\index.pyd in pandas.index.IndexEngine.get_loc (pandas\index.c:3534)()
D:\Warren\Anaconda\lib\site-packages\pandas\hashtable.pyd in pandas.hashtable.Float64HashTable.get_item (pandas\hashtable.c:9645)()
D:\Warren\Anaconda\lib\site-packages\pandas\hashtable.pyd in pandas.hashtable.Float64HashTable.get_item (pandas\hashtable.c:9586)()
KeyError: 9.7
您使用的是哪个版本的熊猫?
根据文件 :
注意从0.14.0开始,Float64Index由本机float64 dtype数组支持。 在0.14.0之前,Float64Index由对象dtype数组支持。 在后端使用float64 dtype可将算术运算速度提高约30倍,而Float64Index本身的布尔索引操作速度提高约2倍。 版本0.13.0中的新功能。
默认情况下,在索引创建中传递浮点值或混合整数浮点值时,将自动创建Float64Index。 这使得基于标签的纯切片范例能够使标量索引和切片的[],ix,loc完全相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.