我试图在60hz(~16ms)间隔内进行位置数据的基本插值。当我尝试在数据框上使用熊猫0.14插值时,它告诉我我的数据集中只有NaN(不正确)。当我尝试在从数据框中拉出的单个序列上运行它时,它将返回相同的序列,但不填充NaN。我尝试将索引设置为整数,使用不同的方法,摆弄插值函数的轴和限制参数- 没有骰子。我究竟做错了什么?大熊猫插值返回NaN
df.head(5) :
x y ms
0 20.5815 14.1821 333.3333
1 NaN NaN 350
2 20.6112 14.2013 366.6667
3 NaN NaN 383.3333
4 20.5349 14.2232 400
df = df.set_index(df.ms) # set indices to milliseconds
当我尝试运行
df.interpolate(method='values')
我得到这个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-462-cb0f1f01eb84> in <module>()
12
13
---> 14 df.interpolate(method='values')
15
16
/Users/jsb/anaconda/lib/python2.7/site-packages/pandas/core/generic.pyc in interpolate(self, method, axis, limit, inplace, downcast, **kwargs)
2511
2512 if self._data.get_dtype_counts().get('object') == len(self.T):
-> 2513 raise TypeError("Cannot interpolate with all NaNs.")
2514
2515 # create/use the index
TypeError: Cannot interpolate with all NaNs.
我也试着运行在单独的系列,其中仅返回我放在:
temp = df.x
temp.interpolate(method='values')
333.333333 20.5815
350.000000 NaN
366.666667 20.6112
383.333333 NaN
400.000000 20.5349 Name: x, dtype: object
编辑:
道具杰夫鼓舞的解决方案。
添加:
df[['x','y','ms']] = df[['x','y','ms']].astype(float)
前
df.interpolate(method='values')
插值的伎俩。
可以显示df.info(); ü概率有对象dtypes – Jeff
df0.info() <类 'pandas.core.frame.DataFrame'> Float64Index:100个条目,0.0至1650.0 数据列(总3列): X 46非空对象 y 46非空对象 ms 100非空对象 dtypes:object(3) – jbbj94
它们是对象dtypes - 它们是否应该转换为某种东西? – jbbj94