我有一个数据帧,大致如下所示:
timestamp | mmsi | departures_count | calc_speed | coursechange |
---|---|---|---|---|
2012-01-31 07:11:59 | 1.252340e+12 | 1 | 4.041755 | 0.000000 |
2012-01-31 07:22:20 | 1.252340e+12 | 1 | 5.209561 | 30.000000 |
2012-01-31 07:35:34 | 1.252340e+12 | 2 | 5.766184 | 1.000000 |
2012-01-31 07:45:35 | 1.252340e+12 | 2 | 5.932638 | 4.000000 |
2016-11-24 17:05:21 | 2.775153e+14 | 1 | 1.673716 | 17.000000 |
2016-11-24 17:21:21 | 2.775153e+14 | 1 | 0.725156 | 180.800003 |
2016-11-24 17:38:40 | 2.775153e+14 | 1 | 0.418093 | 117.500003 |
Dataframe有更多的列和更多的行(2284331行x 16列),但这些是操作所需的重要行.
它由指示相关行程的唯一标识符mmsi和departures_count组成.由于数据点之间的时间步长差异很大,我正在try 重新采样数据以进行更好的比较.我希望时间步长始终为10分钟.这意味着,如果在10分钟内有多个数据点,我希望对数据进行上采样,如果存在较大的时间间隔,则对其进行下采样(使用内插法).这需要为每mmsi人中的每departures_count人这样做.
我try 使用以下代码,但它不是只返回NaN的值,就是为行程(出发)的每一行返回相同的值.
timeindex = pd.to_datetime(df['timestamp'], format='%Y-%m-%d %H:%M:%S')
df.index = timeindex
group = df.groupby(['mmsi', 'departures_count'])
df_test = group[['coursechange', 'calc_speed']].resample('10Min').interpolate(method='linear')
如果可能的话,我也想将内插方法改为立方而不是线性. 如有任何建议,我们将不胜感激!