我在python中有一个dataframe对象,如下所示:
open high low last gMonth
date
2017-01-02 0.7220 0.7221 0.7166 0.7184 Peter
2017-01-03 0.7184 0.7241 0.7183 0.7219 Jack
2017-01-04 0.7219 0.7287 0.7215 0.7283 Peter
2017-01-05 0.7283 0.7357 0.7273 0.7338 Peter
2017-01-06 0.7338 0.7355 0.7289 0.7301 Jack
2017-01-09 0.7293 0.7374 0.7289 0.7586 Jack
我想要实现的是在gMonth旁边添加一个新列&#39; result&#39;,以便根据现有列的过去几行计算此新列的值。例如,&#39;结果&#39;每行的行数等于过去3行(当前行包括)的平均打开的平方根。换句话说,2017-01-09的结果值应为[(0.7283 + 0.7338 + 0.7293)/ 3] ^ 0.5,2017-01-06的结果将使用向后应用的相同公式计算。< / p>
非常感谢你的帮助。
答案 0 :(得分:0)
您可以使用Series.rolling
:
disclaimer = (TextView) view.findViewById(R.id.disclaimer);
disclaimer.setMovementMethod(LinkMovementMethod.getInstance());
正如您所看到的,默认情况下,当您没有3个值时,这将在开始时提供NaN;如果您想获得一个值,即使您只有1个数据点可以平均值,也可以设置In [16]: df["result"] = df["open"].rolling(window=3).mean()**0.5
In [17]: df
Out[17]:
open high low last gMonth result
date
2017-01-02 0.7220 0.7221 0.7166 0.7184 Peter NaN
2017-01-03 0.7184 0.7241 0.7183 0.7219 Jack NaN
2017-01-04 0.7219 0.7287 0.7215 0.7283 Peter 0.848980
2017-01-05 0.7283 0.7357 0.7273 0.7338 Peter 0.850216
2017-01-06 0.7338 0.7355 0.7289 0.7301 Jack 0.853229
2017-01-09 0.7293 0.7374 0.7289 0.7586 Jack 0.854673
。
答案 1 :(得分:0)
import pandas
df['Result']=pd.rolling_mean(df["open"],window=3)**0.5
如果您需要有关滚动功能的更多信息。 http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.rolling_mean.html