我有一个原始数据集,如下所示:
df = pd.DataFrame({'speed': [66.8,67,67.1,70,69],
'time': ['2017-08-09T05:41:30.168Z', '2017-08-09T05:41:31.136Z', '2017-08-09T05:41:31.386Z', '2017-08-09T05:41:31.103Z','2017-08-09T05:41:35.563Z' ]})
我可以对其进行一些处理,以使其看起来像(删除的微秒):
df['time']= pd.to_datetime(df.time)
df['time'] = df['time'].apply(lambda x: x.replace(microsecond=0))
>>> df
speed time
0 66.8 2017-08-09 05:41:30
1 67.0 2017-08-09 05:41:31
2 67.1 2017-08-09 05:41:31
3 70.0 2017-08-09 05:41:31
4 69.0 2017-08-09 05:41:35
现在,我需要对数据进行重新采样,以便将到达同一时间戳的所有条目平均在一起,对于未接收到任何数据的时间戳,请使用最后一个可用值。喜欢:
speed time
0 66.80 2017-08-09 05:41:30
1 68.03 2017-08-09 05:41:31
2 70.00 2017-08-09 05:41:32
3 70.00 2017-08-09 05:41:33
4 70.00 2017-08-09 05:41:34
5 69.00 2017-08-09 05:41:35
我知道这可能涉及到使用groupby和resample,但是作为一个初学者,我发现自己在为此而苦苦挣扎。关于如何进行的任何想法?
我已经尝试过了,但是结果却是错误的:
df.groupby( [df["time"].dt.second]).mean()
speed
time
30 66.800000
31 68.033333
35 69.000000
In [279]: df.resample('1S', on='time').mean().ffill()
Out[279]:
speed
time
2017-08-09 05:41:30 66.800000
2017-08-09 05:41:31 68.033333
2017-08-09 05:41:32 68.033333
2017-08-09 05:41:33 68.033333
2017-08-09 05:41:34 68.033333
2017-08-09 05:41:35 69.000000
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句