pandas. , - , , , :
In [32]: df['daily_max'] = df.groupby(df.index.date).transform(lambda x: x==x.max())
In [33]: df
Out[33]:
value daily_max
date_time
2011-05-16 00:00:00 1.40893 True
2011-05-16 01:00:00 1.40760 False
2011-05-16 02:00:00 1.40750 False
2011-05-16 03:00:00 1.40649 False
2011-05-17 02:00:00 1.40893 True
2011-05-17 03:00:00 1.40760 False
2011-05-17 04:00:00 1.40750 False
2011-05-17 05:00:00 1.40649 False
2011-05-18 02:00:00 1.40893 True
2011-05-18 03:00:00 1.40760 False
2011-05-18 04:00:00 1.40750 False
2011-05-18 05:00:00 1.40649 False
In [34]: df.groupby(df.index.time)['daily_max'].sum()
Out[34]:
00:00:00 1
01:00:00 0
02:00:00 2
03:00:00 0
04:00:00 0
05:00:00 0
Name: daily_max, dtype: float64
pandas , ( df DatetimeIndex):
df['date'] = [t.date() for t in df.index.to_pydatetime()]
df['time'] = [t.time() for t in df.index.to_pydatetime()]
df['daily_max'] = df.groupby('date')['value'].transform(lambda x: x==x.max())
df.groupby('time')['daily_max'].sum()
, :
from StringIO import StringIO
s="""2011.05.16,00:00,1.40893
2011.05.16,01:00,1.40760
2011.05.16,02:00,1.40750
2011.05.16,03:00,1.40649
2011.05.17,02:00,1.40893
2011.05.17,03:00,1.40760
2011.05.17,04:00,1.40750
2011.05.17,05:00,1.40649
2011.05.18,02:00,1.40893
2011.05.18,03:00,1.40760
2011.05.18,04:00,1.40750
2011.05.18,05:00,1.40649"""
df = pd.read_csv(StringIO(s), header=None, names=['date', 'time', 'value'], parse_dates=[['date', 'time']])
df = df.set_index('date_time')