【发布时间】:2019-04-11 03:36:12
【问题描述】:
我正在尝试在如下所示的数据框中获取时间值的滚动总和:
RunTime
0 00:51:25
1 NaT
2 00:42:16
3 NaT
4 00:40:15
5 NaT
6 00:50:13
7 00:53:28
8 NaT
9 00:37:32
10 NaT
11 01:53:22
12 01:08:22
13 00:59:57
14 00:12:22
预期输出:
RunTime RunTime_MS
0 00:51:25
1 NaT
2 00:42:16
3 NaT
4 00:40:15
5 NaT
6 00:50:13 3:04:09
7 00:53:28 3:06:12
8 NaT 3:06:12
9 00:37:32 3:01:28
10 NaT 3:01:28
11 01:53:22 4:14:35
12 01:08:22 5:22:57
13 00:59:57 5:32:41
14 00:12:22 4:51:35
对于我正在使用的数据框中的其他列(包含浮点数)
dfExt['Distance_MS'] = dfExt['Distance'].fillna(value=0).rolling(window=7).sum()
这工作得很好。 如果我尝试在时间列上执行此操作,我会收到错误
未实现此 dtype timedelta64[ns] 的 Rolling 操作
尽管the documentation 似乎表明.sum() 是您可以在timedelta 上执行的操作。
这是示例代码:
import pandas as pd
from datetime import datetime, timedelta
RunTimeValues = ['00:51:25','','00:42:16','','00:40:15','','00:50:13','00:53:28','','00:37:32','','01:53:22','01:08:22','00:59:57','00:12:22']
for i in range(len(RunTimeValues)):
if RunTimeValues[i] != '':
#RunTimeValues[i] = datetime.strptime(RunTimeValues[i], "%H:%M:%S")
t = datetime.strptime(RunTimeValues[i],"%H:%M:%S")
RunTimeValues[i] = timedelta(hours=t.hour, minutes=t.minute, seconds=t.second)
dfExt = pd.DataFrame({'RunTime': RunTimeValues})
dfExt['RunTime_MS'] = dfExt['RunTime'].fillna(value=0).rolling(window=7).sum()
print(dfExt)
我知道我可以将 timedeltas 转换为浮点数,然后进行滚动求和,但结果并不是我想要的。 有什么建议?
【问题讨论】:
-
你试过用 pip 更新 pandas 吗?
-
我正在运行最新版本 (0.23.4)