从python熊猫中给定的总范围中计算平均总范围?

问题描述 投票:0回答:1

enter image description here

在此工作表中,我需要添加一列Av。 TR和我想计算平均TR。对于平均TR计算:-

前10天为参考。

所以连续10天TR为:-

平均TR =前10天TR和随后几天的平均值AV。 TR将是

FORMULA:Av。 TR = [(前一天的ATR * 9)+(当天的TR)] / 10。

我必须按Av。 TR按“符号”也。这个怎么做?我尝试在熊猫滚动功能,但无法达到目的。

乐器符号时间戳TR FUTIDX BANKNIFTY 6/1/2020 729.8 FUTIDX BANKNIFTY 6/2/2020 834 FUTIDX BANKNIFTY 6/3/2020 1145.2 FUTIDX BANKNIFTY 6/4/2020 846.7 FUTIDX BANKNIFTY 6/5/2020 812.5 FUTIDX BANKNIFTY 6/8/2020 904.6 FUTIDX BANKNIFTY 6/9/2020 1014 FUTIDX BANKNIFTY 6/10/2020 660 FUTIDX BANKNIFTY 6/11/2020 796 FUTIDX BANKNIFTY 6/12/2020 1173 FUTIDX BANKNIFTY 6/15/2020 969 FUTIDX BANKNIFTY 6/16/2020 271 FUTIDX NIFTY 6/1/2020 207 FUTIDX NIFTY 6/2/2020 230 FUTIDX NIFTY 6/3/2020 177.7::::::::::::

我想添加一列Av。 TR。用于计算平均TR我在上面提到了公式,我希望将其按SYMBOL分组。

所以新列ATR会像这样:-

ATR第1行NAN第2行NAN第3行NAN第4行第5行NAN第6行NAN第7行第8行第9行NAN第10行(TR的前10行的平均值)第11行(请参阅上面的“公式”)第12行(请参阅上面的“公式”)(依此类推)(依此类推)

必须按符号分组

python pandas pandas-groupby data-analysis
1个回答
0
投票

您应该能够在每个组上应用滚动变换。这样的事情应该可以实现。

df['Av.TR'] = df.groupby('SYMBOL')['TR'].transform(lambda x: x.rolling(10, 1).mean())

如果您想将前10行留空,则

df['Av.TR'] = df.groupby('SYMBOL')['TR'].transform(lambda x: x.rolling(10).mean())

我不太确定,是否要这样。但结合以上内容,然后使用上一行的值应用公式,就可以到达那里。

df['Av.TR'] = df.groupby('SYMBOL')['TR'].transform(lambda x: x.rolling(10).mean())
df['Av.TR'] = np.where(df.shift(1)['Av.TR'].isna(), np.NaN,
                     (df.shift(1)['Av.TR'] * 9 + df['TR']) / 10)

也许有更好的方法!

© www.soinside.com 2019 - 2024. All rights reserved.