【问题标题】:Select consecultive times in a dataframe在数据框中选择连续时间
【发布时间】:2018-03-19 16:09:51
【问题描述】:

我有一个数据框,我想在其中选择连续时间戳。我的意思是一个接一个发生的时间,在这种情况下,连续发生 15 分钟。 例如,

2017-07-19 17:45:00+02:00    16
2017-07-23 02:45:00+02:00    23
2017-07-25 14:15:00+02:00    23
2017-07-27 07:00:00+02:00    25
2017-07-28 09:30:00+02:00    22
2017-07-28 18:00:00+02:00    17
2017-07-29 04:00:00+02:00    28
2017-07-29 04:15:00+02:00    19
2017-07-29 11:30:00+02:00    20
2017-07-30 09:00:00+02:00    11
2017-08-03 02:45:00+02:00    22
2017-08-04 06:45:00+02:00    27
2017-08-06 01:45:00+02:00    21
2017-08-08 19:30:00+02:00    27
2017-08-08 19:45:00+02:00    27
2017-08-08 20:00:00+02:00    15
2017-08-08 21:45:00+02:00    25

我只会从上面的数据框中选择那些

2017-07-29 04:00:00+02:00    28
2017-07-29 04:15:00+02:00    19
2017-08-08 19:30:00+02:00    27
2017-08-08 19:45:00+02:00    27
2017-08-08 20:00:00+02:00    15 

我有这只是一个例子,但我正在处理许多时间戳。如何使用 python 命令做到这一点?

【问题讨论】:

  • 你能解释一下“连续时间戳”是什么意思吗?
  • 好的,根据您的编辑,这将如何推广到您的实际问题?例如,您要选择 15 分钟间隔内的所有行,还是同一小时内的所有连续行,还是只选择 4:XXPM 的那些行?目前还不清楚。
  • @Mayra 你能说得更具体点吗?你的意思是连续几个小时?
  • 我的数据每 15 分钟发生一次,因此连续时间是每 15 分钟继续发生的数据按此顺序

标签: python pandas dataframe timestamp


【解决方案1】:

你可以

In [202]: s = df.time.diff().dt.total_seconds().eq(900)

In [203]: df[s.shift(-1) | s]
Out[203]:
                  time   v
6  2017-07-29 02:00:00  28
7  2017-07-29 02:15:00  19
13 2017-08-08 17:30:00  27
14 2017-08-08 17:45:00  27
15 2017-08-08 18:00:00  15

In [205]: df.time.diff().dt.total_seconds().eq(900)
Out[205]:
0     False
1     False
2     False
3     False
4     False
5     False
6     False
7      True
8     False
9     False
10    False
11    False
12    False
13    False
14     True
15     True
16    False
Name: time, dtype: bool

【讨论】:

  • 谢谢! df 是数据框,在这种情况下,dt 是什么?
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多