如何从Pandas数据帧中找到谐波平均速度

2024-10-06 09:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,其中有一列速度(KmH)和一列时间戳:

Date,                     Speed
2016-07-07 13:38:02.000,  50.718590
2016-07-18 11:28:00.000,   2.357645
2016-07-15 15:03:08.000,  14.652172
2016-07-18 06:53:00.000,  24.530390
...                       ...
2016-07-18 18:41:31.000,  31.761416
2016-07-14 05:28:42.187,   7.532758

我想要的是平均每天每15分钟有一个harmonic average speed

^{pr2}$

我最初的尝试是从每个时间戳中删除日期,将其设置为索引,然后使用TimeGrouper来查找平均值。(我的数据帧称为输出)代码是:

output['Speed'] = output['Speed']**-1
output['Date'] = output['Date'].apply( lambda d : d.time() )
output = output.set_index(['Date'])
output = output.groupby(pd.TimeGrouper('15Min')).mean()
output['Speed'] = output['Speed']**-1

但是代码不起作用,因为它给了我一个错误:

 Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'

Tags: 数据代码pandasoutputdate时间速度平均值
1条回答
网友
1楼 · 发布于 2024-10-06 09:28:19

我想你要做的是使日期正常化,然后再进行抽样:

In [177]:
df['Date'] = pd.to_datetime(df['Date'].dt.strftime('%H:%M:%S'))
df

Out[177]:
                 Date      Speed
0 2017-02-07 13:38:02  50.718590
1 2017-02-07 11:28:00   2.357645
2 2017-02-07 15:03:08  14.652172
3 2017-02-07 06:53:00  24.530390
4 2017-02-07 18:41:31  31.761416
5 2017-02-07 05:28:42   7.532758

现在所有日期都相同,默认情况下是今天的日期,然后执行您想要的操作:

^{pr2}$

所以这个:

df['Date'] = pd.to_datetime(df['Date'].dt.strftime('%H:%M:%S'))

它的作用是使用^{}将时间提取为一个字符串,然后我们可以使用to_datetime生成一个所有日期都相同的datetime64系列

相关问题 更多 >