Trapz интеграция сгруппированных данных для определенного диапазона - PullRequest
0 голосов
/ 15 мая 2018

У меня есть список 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. Я хотел бы сгруппировать DataFrame по "Device "and do trapz интеграция
  3. Интеграция должна быть с начала TimeSec каждого из данных" Device "до" Current "минимум

Ранее я задавал подобный вопрос, я получилпомогли и выяснили, как группировать данные по «Устройству» и интегрировать trapz для каждой группы «Устройства».Код для всей интеграции данных «Устройство»:

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

На этот раз мне нужно интегрировать данные 1-го TimeSec в данные «Текущего» минимума.Можете ли вы сказать мне, как это сделать?

1 Ответ

0 голосов
/ 15 мая 2018

Попробуйте отфильтровать ваш фрейм данных до значений, которые встречаются до минимального значения.

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...