我正在尝试对每16毫秒(60hz)的位置数据进行基本插值。当我尝试在pandas 0.14上使用dataframe插值时,它告诉我我的数据集中只有NaN(这是不正确的)。当我尝试运行从dataframe提取的单个系列时,它返回相同的系列,没有填充NaN。我尝试过设置索引为整数,使用不同的方法,调整插值函数的轴和限制参数 - 都没成功。我做错了什么?
当我尝试运行时
我遇到了这个错误:
我也尝试过逐个运行系列,只返回我输入的内容:
编辑:
感谢Jeff激发了这个解决方案。
添加:
插值法解决了问题。
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
编辑:
感谢Jeff激发了这个解决方案。
添加:
df[['x','y','ms']] = df[['x','y','ms']].astype(float)
before
df.interpolate(method='values')
插值法解决了问题。
df = df[1:].reset_index(drop=True)
删除了额外的标题行,并使用df.rename(columns={'X center':'x', 'Y center': 'y'},inplace=True)
重命名了列。我有什么做错的吗? - jbbj94