【发布时间】:2018-07-18 03:59:05
【问题描述】:
我有一组关于时间戳、模型和模式的数据 该模式有 4 种不同的模式,表示为 (0,2,4,8)
Index Model Timestamp Mode
1 x 2016-06-26 09:51:24.279 0
2 x 2016-06-26 09:51:26.282 0
3 x 2016-06-26 09:51:28.279 0
4 x 2016-06-26 09:51:30.279 0
5 y 2016-06-26 09:51:32.279 2
6 y 2016-06-26 09:51:34.279 2
7 x 2016-06-26 09:51:36.278 2
8 x 2016-06-26 09:51:38.279 0
9 x 2016-06-26 09:51:40.279 0
10 y 2016-06-26 09:51:42.280 0
11 x 2016-06-26 09:51:44.279 2
12 x 2016-06-26 09:51:46.279 0
13 x 2016-06-26 09:51:48.279 2
14 x 2016-06-26 09:51:50.281 0
15 y 2016-06-26 09:51:52.279 2
16 y 2016-06-26 09:51:54.279 2
17 x 2016-06-26 09:51:56.281 0
18 x 2016-06-26 09:51:58.279 0
19 x 2016-06-26 09:52:00.279 0
我会想在他们的模式(映射到模型)中寻找时差。因此,如果它从模式 0 过渡到模式 2,则在第一个模式 2 应该计算 0,它应该计算持续时间差异,如下所示
Index Model Timestamp Mode Diff
1 x 2016-06-26 09:51:24.279 0 0
2 x 2016-06-26 09:51:26.282 0 2.002
3 x 2016-06-26 09:51:28.279 0 1.998
4 x 2016-06-26 09:51:30.279 0 2
5 y 2016-06-26 09:51:32.279 2 0
6 y 2016-06-26 09:51:34.279 2 2
7 x 2016-06-26 09:51:36.278 2 0
8 x 2016-06-26 09:51:38.279 0 0
9 x 2016-06-26 09:51:40.279 0 2
10 y 2016-06-26 09:51:42.280 0 0
11 x 2016-06-26 09:51:44.279 2 0
12 x 2016-06-26 09:51:46.279 0 0
13 x 2016-06-26 09:51:48.279 2 0
14 x 2016-06-26 09:51:50.281 0 0
15 y 2016-06-26 09:51:52.279 2 0
16 y 2016-06-26 09:51:54.279 2 2
17 x 2016-06-26 09:51:56.281 0 6
18 x 2016-06-26 09:51:58.279 0 1.998
19 x 2016-06-26 09:52:00.279 0 2
到目前为止,我在 mode 中进行了排序(分组时间和模式),然后找到正确的差异。过境时我无法获得 0。
请指教!
tdm = mydataset.groupby(["Model","Drive Mode"])["timestamp"]
mydataset["DM-Diff"] = tdm.diff().fillna(0) / pd.datetools.timedelta(seconds = 1)
mydataset = mydataset[mydataset["DM-Diff"] < 180]
mydataset = mydataset[mydataset["DM-Diff"] > -1]#hardcoding with range so that it will not include other mode value
【问题讨论】:
标签: python pandas dataframe duration