python中的滚动函数

python中的滚动函数,python,pandas,Python,Pandas,我不知道如何最好地忽略滚动百分位函数中的NAN。有人知道吗 seriestest = pd.Series([1, 5, 7, 2, 4, 6, 9, 3, 8, 10]) 并插入南 seriestest2 = pd.Series([1, 5, np.NaN, 2, 4, np.nan, 9, 3, 8, 10]) 现在,在第一个系列中,我使用以下方法获得预期输出: seriestest.rolling(window = 3).quantile(.5) 但是,我也希望这样做,忽略test2系

我不知道如何最好地忽略滚动百分位函数中的NAN。有人知道吗

seriestest = pd.Series([1, 5, 7, 2, 4, 6, 9, 3, 8, 10])
并插入南

seriestest2 = pd.Series([1, 5, np.NaN, 2, 4, np.nan, 9, 3, 8, 10])
现在,在第一个系列中,我使用以下方法获得预期输出:

seriestest.rolling(window = 3).quantile(.5)
但是,我也希望这样做,忽略test2系列上的NaN

seriestest2.rolling(window = 3).quantile(.5)
给出:

0    NaN
1    NaN
2    NaN
3    NaN
4    NaN
5    NaN
6    NaN
7    NaN
8    8.0
9    8.0
dtype: float64
但我认为如果我们能解析一个
skipna=True
,它会给出类似的结果,这对我来说并不适用:

0    NaN
1    NaN
2    5.0
3    2.0
4    4.0
5    4.0
6    4.0
7    3.0
8    8.0
9    8.0
dtype: float64

问题在于,使用
nan
值将使滚动窗口中的元素数(3)少于所需的数量。通过设置
min\u periods
参数,可以将
rolling
的最小有效观察次数定义为更少

seriestest2.rolling(window=3, min_periods=1).quantile(.5)
或者,如果您只是想用say
0
替换
nan
值,您可以使用
fillna

seriestest2.fillna(value=0).rolling(window=3).quantile(.5)

当窗口中有一个
NaN
时,您希望使用什么功能?我认为您的分位数计算不正确right@Prune我希望忽略NaN并假装它不存在,也就是说,计算出窗口期间的所有整数。“假装它不存在”有各种形式。例如,当您到达第一个完整窗口
(1,5,NaN)
,您是只想要可见的两个值,还是想要填充下一个可用的值2?啊,对不起,我只想要可见的两个值,但这与OP期望的值不匹配,因此OP可能有其他想法。不幸的是,我不清楚这些数字是如何获得的。不过,这似乎与预期相符。谢谢@busybear。我试试看。。我想你已经解决了我想要描述的问题