Trapz整合了一定范围的分组数据

时间:2018-05-15 16:56:44

标签: python pandas scipy

我有一个DataFrame列表如下:

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
 ....
  1. 在每个设备数据集中,都有一个当前最小值
  2. 我想通过" Device"将数据帧分组。并进行陷阱整合
  3. 集成应该从每个" Device"的TimeSec开始。数据到"当前"最小
  4. 之前我问了类似的问题,我得到了帮助,并想出了如何通过" Device"和trapz集成每个"设备"组。 整个"设备"的代码数据集成是:

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

    这次我需要将第一个TimeSec数据集成到" Current"最低数据。你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:1)

尝试使用此功能将数据帧过滤到最低值的值。

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))