我有一个名为p\u assets\u df的数据帧,看起来像这样:
<close> <high> <low> <open> <vol>
<date> <ticker>
20110101 AEDCAD 0.2707 0.2715 0.2707 0.2715 0
AEDCHF 0.2545 0.2545 0.2545 0.2545 0
AEDDKK 1.4950 1.5262 1.4950 1.5262 0
AEDEUR 0.2006 0.2047 0.2006 0.2047 0
AEDGBP 0.1747 0.1759 0.1747 0.1759 0
AEDINR 12.1320 12.1320 12.1320 12.1320 0
AEDJPY 22.1160 22.1550 22.1160 22.1550 0
AEDNZD 0.3495 0.3514 0.3495 0.3514 0
AEDPKR 23.3050 23.3170 23.3050 23.3170 0
20110102 AEDZAR 1.7914 1.8020 1.7864 1.8020 0
ARSAUD 0.2476 0.2478 0.2424 0.2424 0
ARSBRL 0.4181 0.4181 0.4114 0.4114 0
ARSCAD 0.2512 0.2516 0.2475 0.2475 0
ARSCHF 0.2360 0.2364 0.2310 0.2310 0
ARSEUR 0.1894 0.1894 0.1852 0.1852 0
ARSGBP 0.1625 0.1625 0.1589 0.1589 0
ARSHKD 1.9653 1.9662 1.9280 1.9280 0
ARSJPY 20.5260 20.5530 20.1270 20.1270 0
我正在尝试添加一个名为“滚动平均值”的新列,它使用列值来计算每个股票代码的移动平均值。这是一个多索引df,日期作为第一个索引,股票代码作为第二个索引。你知道吗
我试过这样做:
这是我试过的代码。你知道吗
p_assets_df['Rolling_Average'] =
p_assets_df.groupby(level=0).rolling(window=26)
['<close>'].mean().values
我还将level值设置为1和[0,1],没有任何更改。你知道吗
我遇到的问题是,滚动平均值只会在新列中返回NaN的值。对于window参数中提供的第一个x值,我希望是NaN,但不是列中的每个值。请注意,第一个指数从20110101到20111231,频率为日。 下面是tail()方法的输出。你知道吗
20111230 AEDCAD 0.2776 0.2780 0.2776 0.2780 0 NaN
AEDCHF 0.2555 0.2559 0.2555 0.2559 0 NaN
AEDDKK 1.5606 1.5637 1.5606 1.5620 0 NaN
AEDEUR 0.2100 0.2103 0.2100 0.2101 0 NaN
AEDGBP 0.1763 0.1766 0.1763 0.1766 0 NaN
AEDINR 14.4260 14.5180 14.4020 14.4290 0 NaN
AEDJPY 21.0730 21.1350 21.0730 21.1350 0 NaN
AEDNZD 0.3519 0.3529 0.3519 0.3529 0 NaN
AEDPKR 24.4340 24.4340 24.4210 24.4210 0 NaN
20111231 AEDCAD 0.2768 0.2768 0.2768 0.2768 0 NaN
AEDCHF 0.2553 0.2553 0.2553 0.2553 0 NaN
AEDDKK 1.5590 1.5590 1.5590 1.5590 0 NaN
AEDEUR 0.2097 0.2097 0.2097 0.2097 0 NaN
AEDGBP 0.1755 0.1755 0.1755 0.1755 0 NaN
AEDINR 14.4260 14.4260 14.4260 14.4260 0 NaN
AEDJPY 20.9620 20.9620 20.9620 20.9620 0 NaN
AEDNZD 0.3493 0.3493 0.3493 0.3493 0 NaN
AEDPKR 24.4480 24.4480 24.4480 24.4480 0 NaN
谢谢你的帮助。你知道吗
我相信您需要} ,然后用
level=1
,为了正确对齐输出,请按第一级添加^{drop=True
删除它,而不是.values
:用
window=2
测试问题的样本数据:相关问题 更多 >
编程相关推荐