【发布时间】:2013-06-25 10:21:36
【问题描述】:
你能解释一下这种奇怪的行为吗?
df=pd.DataFrame({'year':[1986,1987,1988],'bomb':arange(3)}).set_index('year')
In [9]: df.reindex(arange(1986,1988.125,.125))
Out[9]:
bomb
1986.000 0
1986.125 NaN
1986.250 NaN
1986.375 NaN
1986.500 NaN
1986.625 NaN
1986.750 NaN
1986.875 NaN
1987.000 1
1987.125 NaN
1987.250 NaN
1987.375 NaN
1987.500 NaN
1987.625 NaN
1987.750 NaN
1987.875 NaN
1988.000 2
In [10]: df.reindex(arange(1986,1988.1,.1))
Out[10]:
bomb
1986.0 0
1986.1 NaN
1986.2 NaN
1986.3 NaN
1986.4 NaN
1986.5 NaN
1986.6 NaN
1986.7 NaN
1986.8 NaN
1986.9 NaN
1987.0 NaN
1987.1 NaN
1987.2 NaN
1987.3 NaN
1987.4 NaN
1987.5 NaN
1987.6 NaN
1987.7 NaN
1987.8 NaN
1987.9 NaN
1988.0 NaN
当增量不是 .125 时,我发现新索引值不会“找到”具有匹配值的旧行。即有一个精度问题没有被克服。即使我在尝试插值之前强制索引为浮点数也是如此。发生了什么和/或这样做的正确方法是什么? 通过使用
,我已经能够让它以 0.1 的增量工作reindex( np.array(map(round,arange(1985,2010+dt,dt)*10))/10.0 )
顺便说一句,我这样做是线性插值多个列的第一步(例如,“炸弹”就是其中之一)。如果有更好的方法可以做到这一点,我很乐意直截了当。
【问题讨论】:
-
看起来你真的想要一个类似日期的索引,或者你真的出于某种原因想要一个浮点索引?你想要什么作为你的最终输出?
-
是的,我猜它是 datelike,但我真的不需要特殊/聪明的功能,除了小数点后。最终输出?这是:youtube.com/watch?v=1BGzzykW_QM&feature=youtu.be 即我有几年的数据,我想将列值插入到(更精细的)网格中以便平滑地制作动画。
标签: indexing integer pandas interpolation reindex