Pandas Int64Index,dtype = float

时间:2015-04-22 10:50:38

标签: python python-3.x indexing pandas

我对熊猫比较陌生。当最初包含整数的索引被操纵以使其包含浮点数时,我偶然发现了切片pandas DataFrame的问题。请考虑以下示例(有些人设法使其独立;实际上,数据是从文件加载的):

df = pd.DataFrame({'i': np.linspace(0, 5, 6).astype(np.int64), 
                   'j': np.linspace(2, 3, 6)})
df.set_index('i', inplace=True)
print(df.index)   # Int64Index([0, 1, 2, 3, 4, 5], dtype='int64')
df.index = df.index / 10.
print(df.index)   # Int64Index([0.0, 0.1, 0.2, 0.3, 0.4, 0.5], dtype='float64')
df[:0.3]

最后一行提出了这个例外:

TypeError: the slice stop value [None] is not a proper indexer 
for this index type (Int64Index)

虽然使用

的明确演员来解决这个问题相对容易
df.index = np.asarray(df.index, dtype=np.float64) / 10.

我花了很长时间才弄明白发生了什么。我希望在原始代码中发生的是索引将成为Float64Index或类似的东西。当我第一次注意到Int64Indexdtype=float时,我认为这很奇怪。是否有一些我应该遵循的最佳实践或类似措施来避免这个问题?

我的pandas版本在python 3.4上是0.15.2。

0 个答案:

没有答案