在我的原始帖子中,我建议使用
pd.TimeGrouper。如今,使用
pd.Grouper代替
pd.TimeGrouper。语法在很大程度上是相同的,但
TimeGrouper现在已不支持
pd.Grouper。
此外,虽然
pd.TimeGrouper只能按DatetimeIndex分组,但可以按日期时间
列
pd.Grouper进行分组,而您可以通过参数指定。
__
key
您可以使用
pd.Grouper来按小时将DatetimeIndex’ed Dataframe分组:
grouper = df.groupby([pd.Grouper(freq='1H'), 'Location'])
用于
count计算每个组中的事件数:
grouper['Event'].count()#Location# 2014-08-25 21:00:00 HK 1#LDN 1# 2014-08-25 22:00:00 LDN 2# Name: Event, dtype: int64
用于
unstack将
Location索引级别移至列级别:
grouper['Event'].count().unstack()# Out[49]: # Location HK LDN# 2014-08-25 21:00:00 1 1# 2014-08-25 22:00:00 NaN 2
然后用于
fillna将NaN更改为零。
放在一起
grouper = df.groupby([pd.Grouper(freq='1H'), 'Location'])result = grouper['Event'].count().unstack('Location').fillna(0)产量
Location HK LDN2014-08-25 21:00:00 1 12014-08-25 22:00:00 0 2



