Pandas 为某些方法和某些大小的数据帧插值返回 ValueErrors
Pandas Interpolate returning ValueErrors for some methods and some sizes of dataframes
我在 Pandas 数据帧的插值方面遇到了一些问题。
基本上,我有一个 295339 行的数据框,并人工生成了 nan 来研究不同的采样率和完成方法。
问题是,当我对我的采样率和完成方法进行一些组合时,一切正常,而对于其他人,我收到以下错误消息,
ValueError: The number of derivatives at boundaries does not match: expected. 1, got 0+0.
ValueError
的类型取决于我使用的采样率和完成方法的组合。
因此,例如,如果我每小时为每位客户制作一个 nan,然后使用线性或三次方法进行插值,它就可以工作。但是如果我每四个小时对每个客户进行一次采样,它适用于线性方法而不适用于三次方法(下面的插值代码):
latitude = my_frame.filter(['Customer_id', 'Lat'], axis=1)
latitude = latitude.groupby('Customer_id').apply(lambda group: group.interpolate(method= 'cubic')
奇怪的是,在我的测试过程中,为了提高速度,我将方法限制在 3 个客户(代表 8500 行),但没有出现任何问题。
所以,我的问题是为什么会发生这种情况,是否有任何解决方法。
我发现问题在于,对于记录较少的客户,我无法使用三次方法进行插值,因为他们没有至少 4 个已知点。
我在 Pandas 数据帧的插值方面遇到了一些问题。
基本上,我有一个 295339 行的数据框,并人工生成了 nan 来研究不同的采样率和完成方法。
问题是,当我对我的采样率和完成方法进行一些组合时,一切正常,而对于其他人,我收到以下错误消息,
ValueError: The number of derivatives at boundaries does not match: expected. 1, got 0+0.
ValueError
的类型取决于我使用的采样率和完成方法的组合。
因此,例如,如果我每小时为每位客户制作一个 nan,然后使用线性或三次方法进行插值,它就可以工作。但是如果我每四个小时对每个客户进行一次采样,它适用于线性方法而不适用于三次方法(下面的插值代码):
latitude = my_frame.filter(['Customer_id', 'Lat'], axis=1)
latitude = latitude.groupby('Customer_id').apply(lambda group: group.interpolate(method= 'cubic')
奇怪的是,在我的测试过程中,为了提高速度,我将方法限制在 3 个客户(代表 8500 行),但没有出现任何问题。
所以,我的问题是为什么会发生这种情况,是否有任何解决方法。
我发现问题在于,对于记录较少的客户,我无法使用三次方法进行插值,因为他们没有至少 4 个已知点。