目前我有一个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
问题是时间间隔不均匀,每个设备的数据数量也不均匀。
非常感谢!
答案 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值。