Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 滚动窗口的中值,不包括零_Python_Pandas_Median - Fatal编程技术网

Python 滚动窗口的中值,不包括零

Python 滚动窗口的中值,不包括零,python,pandas,median,Python,Pandas,Median,当我试图找到以下系列的滚动中值时,我得到了一个南的列表 我用过: b = a[a!=0].rolling(100).median() a=实际数据系列(数据帧)。其中有一堆零,我想在求中值时排除这些零 b=滚动中间带 a[a!=0]给出了以下系列 2017-10-05南 2017-10-06 -0.001074 2017-10-09 -0.001804 2017-10-10南 2017-10-11南 2017-10-12 -0.001687 2017-10-13南 2017-10-16南 20

当我试图找到以下系列的滚动中值时,我得到了一个南的列表

我用过:

b = a[a!=0].rolling(100).median()
a=实际数据系列(数据帧)。其中有一堆零,我想在求中值时排除这些零

b=滚动中间带

a[a!=0]给出了以下系列

2017-10-05南
2017-10-06 -0.001074
2017-10-09 -0.001804
2017-10-10南
2017-10-11南
2017-10-12 -0.001687
2017-10-13南
2017-10-16南
2017-10-17南
2017-10-18南
2017-10-19南
2017-10-20南
2017-10-23 -0.003972
2017-10-24南
2017-10-25 -0.004663
2017-10-26南
2017-10-27南
2017-10-30 -0.003192
2017-10-31南
2017-11-01南
2017-11-02南
2017-11-03南
t2017-11-06南
2017-11-07 -0.000189
2017-11-08南
2017-11-09 -0.003762
2017-11-10 -0.000898
2017-11-13南
2017-11-14-0.002310

输出只是一个NAN列表

我做错了什么?
谢谢大家!

似乎是熊猫身上的一只虫子

试试这个:

a[a!=0].rolling(window=100, center=False, min_periods=1).median()

好像是熊猫身上的虫子

试试这个:

a[a!=0].rolling(window=100, center=False, min_periods=1).median()

由于a是数据帧而不是序列,如果您尝试进行索引,您将得到NAN

以这个系列为例

s = pd.Series(np.random.randint(0,10, 20), index = pd.date_range(start = '01/01/2017', periods = 20))
如果对其进行切片,则删除零

s[s!=0]
但是对于数据帧,相同的代码将引入NAN

df = pd.DataFrame(np.random.randint(0,10, 20), index = pd.date_range(start = '01/01/2017', periods = 20))
可以通过在索引时指定列名来处理此问题

df[df[0] != 0] #df[0] being the column

由于a是数据帧而不是序列,如果您尝试进行索引,您将得到NAN

以这个系列为例

s = pd.Series(np.random.randint(0,10, 20), index = pd.date_range(start = '01/01/2017', periods = 20))
如果对其进行切片,则删除零

s[s!=0]
但是对于数据帧,相同的代码将引入NAN

df = pd.DataFrame(np.random.randint(0,10, 20), index = pd.date_range(start = '01/01/2017', periods = 20))
可以通过在索引时指定列名来处理此问题

df[df[0] != 0] #df[0] being the column

那么,从
a
开始是什么呢?什么版本的熊猫?a是一个数字列表,中间有很多零。这是一个数据帧。我使用0.20.3So,从
a
中的什么开始?什么版本的熊猫?a是一个数字列表,中间有很多零。这是一个数据帧,我用的是0.20.3这非常接近。对我来说已经够好了!但是结果和excel给我的略有不同,不是一个bug。在她的帖子里解释了。我收回了一些我说的话。我同意@wim的说法,这里有一个不跳过
np.nan
的bug。我可以用
a[a!=0].rolling(100).apply(np.nanmedia)
确认结果。然而,瓦伊沙利的帖子仍然值得一看。这非常接近。对我来说已经够好了!但是结果和excel给我的略有不同,不是一个bug。在她的帖子里解释了。我收回了一些我说的话。我同意@wim的说法,这里有一个不跳过
np.nan
的bug。我可以用
a[a!=0].rolling(100).apply(np.nanmedia)
确认结果。然而,Vaishali的帖子仍然值得一看。@piRSquared然而,
DataFrame.median默认情况下忽略nan,并且由于滚动窗口只是将中位数委托给super,因此默认情况下它也应该忽略nan。如果试图显式传递kwarg
skipna=True
,它会在C代码中的某个地方崩溃。我仍然称之为虫子,或者至少是一个坏的惊喜…@wim嗯,这是一个令人讨厌的惊喜。我正在查。然而,根据OP
np.nan
意外出现。这篇文章解释了原因。如果OP是用布尔级数过滤的,他们就不会得到
np.nan
,它应该是有效的。也就是说,我正在检查你的建议,因为这听起来很糟糕@piRSquared,我错过了昨晚所有的动作,祝贺你10万@但是,
DataFrame.median
默认情况下忽略nan,并且由于滚动窗口仅将中位数委托给super,因此默认情况下也应忽略nan。如果试图显式传递kwarg
skipna=True
,它会在C代码中的某个地方崩溃。我仍然称之为虫子,或者至少是一个坏的惊喜…@wim嗯,这是一个令人讨厌的惊喜。我正在查。然而,根据OP
np.nan
意外出现。这篇文章解释了原因。如果OP是用布尔级数过滤的,他们就不会得到
np.nan
,它应该是有效的。也就是说,我正在检查你的建议,因为这听起来很糟糕@piRSquared,我错过了昨晚所有的动作,祝贺你10万!