我有一个 pandas 数据框,看起来像这样:
E p S
.1 .1 4
.1. .2 5
. . .
. . .
.3 .1 2
.3. .2 4
. . .
. . .
15. .1 5
15. .2 9
. . .
. . .
如您所见,对于
E
的每个值,p
和 S
都有多个值。我正在尝试对 E 的每个值执行积分 $n(E) = \Int dp p^2 S$
。不幸的是,由于积分中的 p^2
因素,我认为我不能使用 groupby(['E']).sum()
,因为这只会对 S
执行总和
没有 p^2
因素。任何以漂亮的 pythonic 方式完成此积分的方法都将不胜感激。
使用numpy的梯形公式你可以这样做:
df.groupby('E').apply(lambda x: np.trapz(x['S'].mul(x['p']**2), x['p']))