Самое простое, что приходит на ум, - это просто удалить значения выходных из ваших данных:
nifty=nifty[nifty['Close']!=0]
и затем выполнить скользящее среднее:
nifty["3weekMA"]=nifty["Close"].rolling(15).mean()
Просто вместо 21, используйте 15 и хорошо, это будет работать так, как должно.Есть несколько указателей на это, хотя.Скользящее среднее даст среднее из последних 15 значений, но проблема в том, что оно приводит к 15-му или 21-му значению в вашем случае, поэтому результирующий график будет выглядеть примерно так:
![enter image description here](https://i.stack.imgur.com/qwady.png)
Итак, чтобы решить эту проблему, все, что нам нужно сделать, это, возможно, сдвинуть новую найденную скользящую среднюю вверх или, может быть, просто построить значения Close после первых 7 и до последних 7 вместе со значениями скользящей средней, и это будет выглядеть как-токак:
plt.figure(figsize=(10,8))
plt.plot(nifty['Close'].values.tolist()[7:-7])
plt.plot(nifty['3weekMA'].values.tolist()[14:])
![enter image description here](https://i.stack.imgur.com/jZONv.png)
Хорошо, но визуализация только для целей представления;Я надеюсь, вы понимаете, что делать с такими данными.Я надеюсь, что это решит вашу проблему, и да, значение скользящего среднего действительно приходит в 11Ks, а не в 8Ks.
Пример вывода:
Date Open High Low Close Volume Turnover 3weekMA
-------------------------------------------------------------------------------------------------
2015-01-15 11672.30 11774.50 11575.10 11669.85 13882213 1.764560e+10 NaN
2015-01-16 11708.85 11708.85 11582.85 11659.60 12368107 1.714690e+10 NaN
2015-01-19 11732.50 11797.60 11629.05 11642.75 13696381 1.183750e+10 NaN
2015-01-20 11681.80 11721.90 11635.70 11695.00 11021415 1.234730e+10 NaN
2015-01-21 11732.45 11838.30 11659.70 11813.70 18679282 1.973070e+10 11418.113333
2015-01-22 11832.55 11884.50 11782.95 11850.85 15715515 1.655670e+10 11460.456667
2015-01-23 11877.90 11921.00 11767.40 11885.15 30034833 2.001210e+10 11494.660000
2015-01-27 11915.60 11917.25 11679.55 11693.45 17005337 1.866840e+10 11524.320000
2015-01-28 11712.55 11821.80 11693.80 11809.55 16876897 1.937590e+10 11580.963333
2015-01-29 11812.35 11861.50 11728.75 11824.15 15520902 2.160790e+10 11641.506667
2015-01-30 11998.35 12003.35 11799.35 11824.75 18559078 2.905950e+10 11695.280000
2015-02-02 11871.35 11972.60 11847.80 11943.95 17272113 2.304050e+10 11731.566667
2015-02-03 11963.75 12000.65 11849.00 11963.90 21053605 1.770590e+10 11759.583333