我使用Python 3,并希望像这样对一个数据系列进行升采样:


距离(米),高程(米)
00.00,439.2
20.36,462.7
61.70,480.4
...,...
名称:海拔(米),dtype:float64


要这样(使用线性插值):


距离(米),高程(米)
00.00,439.2
01.00,440.4
02.00,441.6
03.00,442.7
04.00,443.9
05.00,445.1
...,...

最佳答案

我建议使用科学的python库的pandasnumpy作为方法。

首先,您必须同时安装两个:

pip install pandas
pip install numpy


现在,您可以在python实例中使用/导入它们:

import pandas as pd
import numpy as np


之后,您应该使用数据初始化pandas dataframe

df=pd.DataFrame({'meters':[0.0], 'elevation': [439.2]})


现在,我建议使用numpys arange函数重新索引数据:

df2 = df.reindex(np.arange(0.0, 62, 0.01))


设置20.36和61.70的值:

(也许有一个更聪明的解决方案,但让我们将此作为解决方法。)

df2.set_value(20.36, 'meters', 20.36)
df2.set_value(20.36, 'elevation', 462.7)

df2.set_value(61.70, 'meters', 61.70)
df2.set_value(61.70, 'elevation', 480.4)


现在我们可以使用pandas linear interpolation了:

df3 = df2.interpolate(method='linear', limit_direction='forward', axis=0)


最后得到我们想要的数据:

>>> df3[0:100:100]
      meters   elevation
0.0      0.0  439.200000
1.0      1.0  440.354224
2.0      2.0  441.508448
3.0      3.0  442.662672
4.0      4.0  443.816896
...      ...         ...
58.0    58.0  478.815820
59.0    59.0  479.243977
60.0    60.0  479.672134
61.0    61.0  480.100290

10-07 18:59
查看更多