仅查找dataframe列的平均值直到日期结束(datetime-indexed)

时间:2016-07-14 12:23:20

标签: python datetime pandas dataframe

我有一个由DataFrame编入索引的datetime对象。让我们说我的对象看起来像这样:

 DateTime              A
 2016-07-01 08:30:00   5
 2016-07-01 09:28:17   6
 2016-07-01 14:09:11   9
 2016-07-01 22:33:44   10
 2016-07-02 08:30:00   20
 2016-07-02 15:00:00   30

我想创建一个新列,其列A的平均值仅从具有时间戳的数据点(行)计算,直到当天结束。在此示例中,生成的dataframe对象如下所示:

 DateTime              A    B
 2016-07-01 08:30:00   5    7.5
 2016-07-01 09:28:17   6    8.33333
 2016-07-01 14:09:11   9    9.5
 2016-07-01 22:33:44   10   10
 2016-07-02 08:30:00   20   25
 2016-07-02 15:00:00   30   30

我曾想过制作一个单独的列来获取当天的结束,按时间(df['A'].loc[df['DateTime']:df['end_of_day']].mean())对数据进行切片,但我发现您无法根据一系列数据对数据进行切片。有没有人有任何有效的方法来做到这一点?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

使用

def nowTilEODMean(d): cond1 = df.index >= d.name cond2 = df.index.day == d.name.day return df.A.loc[cond1 & cond2].mean() df['B'] = df.apply(nowTilEODMean, axis=1) df 创建自定义函数
OneToOneField

enter image description here