Python 使用pandas查找连续时间间隔中的最小值

Python 使用pandas查找连续时间间隔中的最小值,python,pandas,Python,Pandas,我在这件事上有点纠结。我有一个dataframe,它有一个变量的样本,每个样本都有一个时间戳。数据按时间的增加顺序排序: import pandas as pd dates = [#Continuous Block pd.Timestamp('2012-05-03 09:00:01'), pd.Timestamp('2012-05-03 09:00:02'), pd.Timestamp('2012-05-03 09:00:03'),

我在这件事上有点纠结。我有一个
dataframe
,它有一个变量的样本,每个样本都有一个时间戳。数据按时间的增加顺序排序:

import pandas as pd

dates = [#Continuous Block
         pd.Timestamp('2012-05-03 09:00:01'), 
         pd.Timestamp('2012-05-03 09:00:02'), 
         pd.Timestamp('2012-05-03 09:00:03'),
         pd.Timestamp('2012-05-03 09:00:04'),
         #Non Continuous Block
         pd.Timestamp('2012-05-03 16:00:00'),
         pd.Timestamp('2012-05-03 17:00:04'),
         #Continuous Block
         pd.Timestamp('2012-05-03 18:00:01'), 
         pd.Timestamp('2012-05-03 18:00:02'), 
         pd.Timestamp('2012-05-03 18:00:03'),
         #Non Continuous Block
         pd.Timestamp('2012-05-03 19:00:03')]     


vars = [-0.105, -1.08, -1.08, -1.03, -1.0, -1.1, -0.15,-0.14,-0.13,-0.11]
df = pd.DataFrame({'A' : vars}, index=dates)
这使得:

                    A
2012-05-03 09:00:01 -0.105
2012-05-03 09:00:02 -1.080
2012-05-03 09:00:03 -1.080
2012-05-03 09:00:04 -1.030
2012-05-03 16:00:00 -1.000
2012-05-03 17:00:04 -1.100
2012-05-03 18:00:01 -0.150
2012-05-03 18:00:02 -0.140
2012-05-03 18:00:03 -0.130
2012-05-03 19:00:03 -0.110
正如您所看到的,通常有连续的条目,它们之间的间隔为1秒。我想在一组间隔1秒的时间戳中提取A的最小值。因此,在上述示例中,运行函数应给出:

2012-05-03 09:00:03,    -1.080
2012-05-03 16:00:00,    -1.000
2012-05-03 17:00:04,    -1.100
2012-05-03 18:00:01,    -0.150
2012-05-03 19:00:03,    -0.110

谢谢你的帮助

我通过创建一个名为“时间”的附加专栏来实现这一点

df['Time'] = df.index
df2 = df.groupby([df.index.hour]).apply(lambda x: x.min())
df2.reset_index(drop = True,inplace='True')
print df2.head()
给出:

     A                Time
0 -1.08 2012-05-03 09:00:01
1 -1.00 2012-05-03 16:00:00
2 -1.10 2012-05-03 17:00:04
3 -0.15 2012-05-03 18:00:01
4 -0.11 2012-05-03 19:00:03
如果只需要按小时分组,则不需要时间列,需要按时间戳分组:

df2 = df.groupby([df.index.hour]).apply(lambda x: x.min())
print df2.head()
输出为:

       A
9  -1.08
16 -1.00
17 -1.10
18 -0.15
19 -0.11

您是否也需要整个时间戳?我想记录最低变量发生的时间。所以,是的。我不需要日期,只需要一天中的时间,如果这有什么帮助的话?我需要做秒的部分,但应该需要一些时间来解决这个问题。这不是一个理想的方法,尽管嘿,太好了!谢谢