Python 特定范围内分组数据的Trapz集成

Python 特定范围内分组数据的Trapz集成,python,pandas,scipy,Python,Pandas,Scipy,我有一个数据帧列表,如下所示: Device TimeSec Current 1 0.1 0.02 1 0.25 0.05 1 0.32 0.07 1 0.45 0.01 1 0.67 0.05 1 1.01 0.08 1 1.12 0.11 1 1.32 0.15 2

我有一个数据帧列表,如下所示:

Device   TimeSec  Current
  1        0.1      0.02
  1        0.25     0.05
  1        0.32     0.07
  1        0.45     0.01
  1        0.67     0.05
  1        1.01     0.08
  1        1.12     0.11
  1        1.32     0.15
  2        0.11     0.04
  2        0.22     0.06
  2        0.28     0.07
  2        0.35     0.02
  2        0.41     0.05
  2        0.51     0.08
  2        0.61     0.12
 ....
  • 在每个设备数据集中,都有一个当前最小值
  • 我想按“设备”分组数据帧并进行trapz集成
  • 集成应从每个“设备”数据的TimeSec开始到“当前”最小值
  • 之前我问过类似的问题,我得到了帮助,并找到了如何按“设备”分组数据,以及如何为每个“设备”组集成trapz。 整个“设备”数据集成的代码为:

    DeviceGroup = df.groupby('Device')
    Result = DeviceGroup.apply(lambda x: integrate.trapz(x.Current, x=x.TimeSec))
    

    这一次,我需要将第1次TimeSec数据集成到“当前”最小数据。你能告诉我怎么做吗?

    试试这个方法,将数据帧过滤到最小值

    from scipy import integrate
    
    df[df.groupby('Device')['Current'].transform(lambda x: x.diff().shift().bfill().gt(0).cumprod().astype(bool))]\
      .groupby('Device').apply(lambda g: integrate.trapz(g['Current'], x=g.TimeSec))
    

    您的预期输出是什么样子的?我希望有一系列的集成数据。系列的索引是设备,列是积分值。你能告诉我如何定义“当前”最小值吗?它是每TimeSec还是每设备组?它是每设备组的“当前”最小值。