如何使用 Pandas 对数据帧的前几行进行插值?

How do I use Pandas to interpolate on the first few rows of a dataframe?

我有一些未填充行的天体物理学数据,我正在尝试使用 Pandas Interpolate 方法来填充这些数据。它适用于 np.NaN 值,但前三行除外。它填充值,但不是线性填充,它只是放置在第四行的值中。数据帧的第一个块(称为 avgdf_final)如下所示:

        day     lon     lat    rad
nums                              
0     319.0     NaN     NaN    NaN
1     320.0     NaN     NaN    NaN
2     321.0     NaN     NaN    NaN
3     322.0  56.485  2.7800  1.158
4     323.0  43.300  2.6800  1.166
5     324.0  30.100  2.5775  1.174

我试过这个(有大约一百万个不同的小变化)无济于事:

avgdf_final.interpolate(limit_direction='backward')

每次,我都会得到这样的结果:

        day     lon     lat    rad
nums                              
0     319.0  56.485  2.7800  1.158
1     320.0  56.485  2.7800  1.158
2     321.0  56.485  2.7800  1.158
3     322.0  56.485  2.7800  1.158
4     323.0  43.300  2.6800  1.166
5     324.0  30.100  2.5775  1.174

很明显,这不是插值:它只是再次粘贴了相同的行。我该怎么做才能完成这项工作?预先感谢您的任何回复!!

“线性”插值需要在数据之间进行,这里不是这种情况(您宁愿额外插值)。

您可以尝试使用样条曲线:

df2 = df.interpolate(method='spline', limit_direction='backward', order=1)

有关其他方法,请参阅 interpolate 文档。

输出:

     day      lon       lat    rad
0  319.0  96.0650  3.084167  1.134
1  320.0  82.8725  2.982917  1.142
2  321.0  69.6800  2.881667  1.150
3  322.0  56.4850  2.780000  1.158
4  323.0  43.3000  2.680000  1.166
5  324.0  30.1000  2.577500  1.174