Python 2.7 熊猫时间序列:groupby和sum从中午到中午

Python 2.7 熊猫时间序列:groupby和sum从中午到中午,python-2.7,pandas,Python 2.7,Pandas,我的熊猫数据框架的结构如下(以“日期”作为索引): 我使用以下方法按日期分组并计算每天的总秒数: df_sum = df.groupby(df.index.date).sum() 我想做的是计算从一天中午到第二天中午的持续时间。有没有一种优雅的方法?提前谢谢 pd.TimeGrouper是一个自定义的groupby类,用于使用DatetimeIndex、TimedeltaIndex或PeriodIndex对NDFrame进行时间间隔分组。(如果数据帧索引使用的是日期字符串,则需要先使用df.i

我的熊猫数据框架的结构如下(以“日期”作为索引):

我使用以下方法按日期分组并计算每天的总秒数:

df_sum = df.groupby(df.index.date).sum()

我想做的是计算从一天中午到第二天中午的持续时间。有没有一种优雅的方法?提前谢谢

pd.TimeGrouper
是一个自定义的groupby类,用于使用
DatetimeIndex
TimedeltaIndex
PeriodIndex
对NDFrame进行时间间隔分组。(如果数据帧索引使用的是日期字符串,则需要先使用
df.index=pd.DatetimeIndex(df.index)
将其转换为DatetimeIndex)

df.groupby(pd.TimeGrouper('24H')).sum()
groups
df
使用从时间
00:00:00开始的24小时间隔

df.groupby(pd.TimeGrouper('24H'),base=12.sum()
使用从时间
12:00:00开始的24小时间隔对
df
进行分组:

In [90]: df.groupby(pd.TimeGrouper('24H', base=12)).sum()
Out[90]: 
                     duration_seconds
2012-12-07 12:00:00           34380.0
2012-12-08 12:00:00           34200.0
2012-12-09 12:00:00           26880.0
2012-12-10 12:00:00           24840.0
2012-12-11 12:00:00           28020.0
2012-12-12 12:00:00               NaN
2012-12-13 12:00:00           23160.0
2012-12-14 12:00:00           32760.0
2012-12-15 12:00:00               NaN
2012-12-16 12:00:00           25440.0
2012-12-17 12:00:00           24780.0
2012-12-18 12:00:00           25080.0
2012-12-19 12:00:00           23100.0
2012-12-20 12:00:00           23520.0
2012-12-21 12:00:00           26820.0
2012-12-22 12:00:00           35940.0
2012-12-23 12:00:00           31800.0

关于pd.TimeGrouper的文档有点稀疏。它是的一个子类,因此它的许多参数与为
pd.gropper
记录的参数具有相同的含义。您可以在中找到更多使用
pd.TimeGrouper
的示例。我通过检查找到了
base
参数。
pd.TimeGrouper
中的
base
参数与中的
base
参数具有相同的含义,这并不奇怪,因为
pd.resample

事实上,仔细想想,计算期望结果的另一种方法是

df.resample('24H', base=12).sum()

这正是我想要的。非常感谢。
df.resample('24H', base=12).sum()