如何根据一个数据帧的三十分钟间隔时间戳对数据进行聚类?

时间:2019-02-20 02:43:28

标签: python pandas date datetime

我有一个数据框,其中包含一个名为epi的度量的各种时间戳。示例如下

             epi    timestamp
30000   8.943856    2019-02-13 00:51:24.238+00
30001   8.220877    2019-02-13 00:51:25.238+00
30002   8.220877    2019-02-13 00:51:26.238+00
30003   5.885678    2019-02-13 00:51:27.238+00
30004   5.506963    2019-02-13 00:51:28.238+00
30005   5.436130    2019-02-13 00:51:29.238+00
30006   5.109536    2019-02-13 00:51:30.237+00
30007   4.302602    2019-02-13 00:51:31.238+00
30008   2.910839    2019-02-13 00:51:32.238+00
30009   3.596520    2019-02-13 00:51:33.237+00
30010   5.167294    2019-02-13 00:51:34.238+00
30011   5.037999    2019-02-13 00:51:35.238+00
30012   4.848845    2019-02-13 00:51:36.238+00
30013   4.953263    2019-02-13 00:51:37.238+00
30014   5.421831    2019-02-13 00:51:38.238+00
70832   1.962402    2019-02-12 18:50:52.375+00
70833   1.910290    2019-02-12 18:50:53.376+00
70834   2.009980    2019-02-12 18:50:54.374+00
70835   2.009980    2019-02-12 18:50:55.376+00
70836   2.064527    2019-02-12 18:50:56.357+00
70837   2.030039    2019-02-12 18:50:57.372+00
70838   2.030039    2019-02-12 18:50:58.374+00
70839   2.082839    2019-02-12 18:50:59.376+00

我想根据18:00-18:3018:30-7:00等间隔从该数据帧构建单个数据帧。数据帧应根据天数和30分钟间隔形成。我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

df.groupby(pd.Grouper)是否接近您的需求?例如:

df.groupby(pd.Grouper(key='timestamp', freq='30min')).sum()

                                 epi
timestamp                           
2019-02-12 18:30:00+00:00  16.100096
2019-02-12 19:00:00+00:00   0.000000
2019-02-12 19:30:00+00:00   0.000000
2019-02-12 20:00:00+00:00   0.000000
2019-02-12 20:30:00+00:00   0.000000
2019-02-12 21:00:00+00:00   0.000000
2019-02-12 21:30:00+00:00   0.000000
2019-02-12 22:00:00+00:00   0.000000
2019-02-12 22:30:00+00:00   0.000000
2019-02-12 23:00:00+00:00   0.000000
2019-02-12 23:30:00+00:00   0.000000
2019-02-13 00:00:00+00:00   0.000000
2019-02-13 00:30:00+00:00  83.563110