Pandas 使用时间索引计算特定时间间隔(例如每天)的数据帧列的积分

Pandas 使用时间索引计算特定时间间隔(例如每天)的数据帧列的积分,pandas,Pandas,我有一个数据框(df),其中包括一年的功率传感器数据。数据以不规则的频率采样。我的df与此类似: rng = pd.date_range('2020-07-30 12:00:00', periods=24, freq='6H') df = pd.DataFrame(np.array([1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6]), rng, columns=['power']) df.in

我有一个数据框(df),其中包括一年的功率传感器数据。数据以不规则的频率采样。我的df与此类似:

rng = pd.date_range('2020-07-30 12:00:00', periods=24, freq='6H')  
df = pd.DataFrame(np.array([1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6, 1, 4, 5, 2, 1, 6]), rng, columns=['power'])  
df.index.name = 'Date'
df["month"] = df.index.month
df["week"] = df.index.week 
我想做的是计算每天的积分,然后能够将不同持续时间的积分相加,例如每周、每月等

对于整个数据框,下面给出正确的答案(他们考虑X轴上的时间):

当我每天尝试整合时,我尝试了:

df.groupby(df.index.date)["power"].apply(np.trapz)
它有两个问题:

  • 它假设“功率”测量值的间隔相等,且为每1个时间单位
  • 它不考虑第一个单位在日变化时的贡献(例如31/7/2020的值应该是13,但现在计算为8.5</LI>)。 我还尝试:

    df.groupby(df.index.date)["power"].apply(integrate.trapz, args=(df.index,))
    
    但是我得到:TypeError:trapz()得到了一个意外的关键字参数'args'

    我希望我的结果如下所示:

    Date           Energy(kWh)
    2020-07-30     15
    2020-07-31     78
    2020-08-01     84
    2020-08-02     66
    2020-08-03     78
    2020-08-04     84
    2020-08-05     30
    
    然后能够分组,例如

    df = df.groupby(["month", "week"])["power"].sum()
    
    结果如下:

    month  week    Energy(kWh)
    7      31      93
    8      31      150
           32      192
    
    那么,我如何在集成中使用初始数据帧的索引呢

    df = df.groupby(["month", "week"])["power"].sum()
    
    month  week    Energy(kWh)
    7      31      93
    8      31      150
           32      192