我想对以下结构的 Pandas 系列进行插值

X
22.88      3.047
45.75      3.215
68.63      3.328
91.50      3.423
114.38     3.516
137.25     3.578
163.40     3.676
196.08     3.756
228.76     3.861
261.44     3.942
294.12     4.012
326.80     4.084
359.48     4.147
392.16     4.197
Name: Y, dtype: float64

我想插入数据,以便我有一个新系列来涵盖 X=[23:392:1] 。我查找了 document 但没有找到可以输入新 x 轴的位置。我错过了什么?如何使用新的 x 轴进行插值?

最佳答案

这可以通过 pandasreindexinterpolate 来完成:

In [27]: s
Out[27]:
            1
0
22.88   3.047
45.75   3.215
68.63   3.328
91.50   3.423
114.38  3.516
137.25  3.578
163.40  3.676
196.08  3.756
228.76  3.861
261.44  3.942
294.12  4.012
326.80  4.084
359.48  4.147
392.16  4.197

[14 rows x 1 columns]

In [28]: idx = pd.Index(np.arange(23, 392))

In [29]: s.reindex(s.index + idx).interpolate(method='values')
Out[29]:
              1
22.88  3.047000
23.00  3.047882
24.00  3.055227
25.00  3.062573
26.00  3.069919
27.00  3.077265
28.00  3.084611
29.00  3.091957
30.00  3.099303
31.00  3.106648
32.00  3.113994
33.00  3.121340
34.00  3.128686
35.00  3.136032
36.00  3.143378
37.00  3.150724
38.00  3.158070
39.00  3.165415
40.00  3.172761
41.00  3.180107
42.00  3.187453
43.00  3.194799
44.00  3.202145
45.00  3.209491
45.75  3.215000
46.00  3.216235
47.00  3.221174
48.00  3.226112

这个想法是创建你想要的索引( s.index + idx ),它是自动排序的,重新索引一个那个(它在新点处制作一堆 NaN s,并使用 NaN 方法进行插值以填充 values s,它使用内插在指标点。

关于Python Pandas 使用新的 x 轴进行插值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20941973/

10-12 16:58