如何找到两行的差异并将此结果除以两行的总和?

如何找到两行的差异并将此结果除以两行的总和?

以下是如何在 Excel 中执行此操作。

http://img1.mukewang.com/61cc466800012fba02300093.jpg

这是我想使用 Python 复制的公式。


=ABS(((B3-B2)/(B3+B2)/2)/((A3-A2)/(A3+A2)/2))

我知道可以用 计算差异df.diff(),但我不知道如何计算总和。


import pandas as pd

data = {'Price':[50,46],'Quantity':[3,6]}

df = pd.DataFrame(data)

print(df)


开心每一天1111
浏览 182回答 3
3回答

吃鸡游戏

可以使用rolling.sum2 的窗口大小:(df.diff()/df.rolling(2).sum()).eval('abs(Quantity/Price)')0    NaN1    8.0dtype: float64

慕尼黑8549860

基本上你已经有了diff然后你已经有两排sum由于diff: x[2]-x[1] Then 'sum' : x[2]+x[1]=x[2]*2-(x[2]-x[1])在您的情况下,总和可以通过以下方式计算df*2-df.diff()Out[714]:    Price  Quantity0    NaN       NaN1   96.0       9.0所以输出是(df.diff()/(df*2-df.diff())).eval('abs(Quantity/Price)')Out[718]: 0    NaN1    8.0dtype: float64

胡说叔叔

对于小数据帧,使用.eval()效率不高。以下在某些100.000行上速度更快:df = (df.diff() / df.rolling(2).sum()).div(2) df['result'] = abs(df.Quantity / df.Price)32.9 ms ± 1.05 ms每个循环(mean ± std. dev. of 7 runs, 10 loops each) 与 39.6 ms ± 931 µs每个循环(mean ± std. dev. of 7 runs, 10 loops each)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python