Pandas DataFrame列数值积分

时间:2018-05-08 18:14:26

标签: python pandas

目前我有一个DataFrame,如下所示:

Device   TimeSec  Current  
 1       0.1      0.02
 1       0.25     0.05
 1       0.32     0.07
 1       0.45     0.12
 1       1.32     0.34
 1       2.37     2.24
 2       0.22     0.56
 2       0.34     0.79
 2       1.87     2.76
 2       3.21     3.11
 3       0.16     1.87
 3       1.12     2.33
 3       2.45     3.21
 3       3.45     5.11
 ......

我想对不同的设备进行Current与TimeSec(∫Idt)的数值整合,并将数据收集到新的DataFrame中,如下所示:

Device   IntegratedCurrent  
 1         x
 2         y
 3         z

问题是时间间隔不均匀,每个设备的数据数量也不均匀。

非常感谢!

1 个答案:

答案 0 :(得分:2)

使用一些数值积分函数,例如scipy.integrate.trapz

from scipy import integrate

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

请注意,使用trapezoid integration rule的此功能允许指定x值。