【问题标题】:Finding the average of dataframe column only until end of day (datetime-indexed)仅在一天结束之前查找数据框列的平均值(日期时间索引)
【发布时间】:2016-11-17 08:45:03
【问题描述】:

我有一个由datetime 索引的DataFrame 对象。假设我的对象如下所示:

 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

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

 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()) 但我发现您不能根据一系列数据对数据进行可变切片。有没有人有任何有效的方法来做到这一点?

提前谢谢你!

【问题讨论】:

    标签: python datetime pandas dataframe


    【解决方案1】:

    apply创建一个自定义函数

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多