我不知道这是否是我的问题的正确标题。无论如何,这是我的简化df:
change gain
0 NaN NaN
1 216.0 216.0
2 270.0 270.0
3 167.0 167.0
4 -80.0 0.0
5 -338.0 0.0
6 -155.0 0.0
7 253.0 253.0
8 -385.0 0.0
9 -30.0 0.0
10 198.0 198.0
11 318.0 318.0
12 266.0 266.0
13 142.0 142.0
14 85.0 85.0
15 199.0 199.0
16 53.0 53.0
17 91.0 91.0
18 187.0 187.0
19 64.0 64.0
20 118.0 118.0
我想添加另一列average_gain
,该列从第14行开始,并且该行的值等于:df['gain'].head(14).mean()
140.769231。到目前为止,我想要的输出看起来像这样:
change gain average_gain
0 NaN NaN NaN
1 216.0 216.0 NaN
2 270.0 270.0 NaN
3 167.0 167.0 NaN
4 -80.0 0.0 NaN
5 -338.0 0.0 NaN
6 -155.0 0.0 NaN
7 253.0 253.0 NaN
8 -385.0 0.0 NaN
9 -30.0 0.0 NaN
10 198.0 198.0 NaN
11 318.0 318.0 NaN
12 266.0 266.0 NaN
13 142.0 142.0 NaN
14 85.0 85.0 140.769231
15 199.0 199.0 NaN
16 53.0 53.0 NaN
17 91.0 91.0 NaN
18 187.0 187.0 NaN
19 64.0 64.0 NaN
20 118.0 118.0 NaN
然后,对于第14行以下的行,我想使用此代码,例如对于第15行:
df.loc[15, 'average_gain'] = (df.loc[14, 'average_gain']*13)+df.loc[15,'gain']
其余各行的公式相同。因此,如果行号为n,则公式为:
df.loc[n, 'average_gain'] = (df.loc[n-1, 'average_gain']*13)+df.loc[n,'gain']
我尝试了以下两种方法,但是没有用:
def func(x):
df['average_gain'].loc[n] = (df['average_gain'].loc[n - 1] * 13) + df['gain'].loc[n]
return x
df['average_gain'].loc[15:] = (df['average_gain'].shift(1) * 13) + df['gain']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句