滚动 window 的中位数,不包括零
median of a rolling window, excluding zeros
当我尝试查找以下系列的滚动中位数时,我得到了一个 NaN 列表。
我用过:
b = a[a!=0].rolling(100).median()
a = 实际数据系列(数据框)。里面有一堆零,我想在找到中位数时排除这些零
b = 滚动中位数
a[a!=0] 给我以下系列。
2017-10-05 NaN
2017-10-06 -0.001074
2017-10-09 -0.001804
2017-10-10 NaN
2017-10-11 NaN
2017-10-12 -0.001687
2017-10-13 NaN
2017-10-16 NaN
2017-10-17 NaN
2017-10-18 NaN
2017-10-19 NaN
2017-10-20 NaN
2017-10-23 -0.003972
2017-10-24 NaN
2017-10-25 -0.004663
2017-10-26 NaN
2017-10-27 NaN
2017-10-30 -0.003192
2017-10-31 NaN
2017-11-01 NaN
2017-11-02 NaN
2017-11-03 NaN
t2017-11-06 NaN
2017-11-07 -0.000189
2017-11-08 NaN
2017-11-09 -0.003762
2017-11-10 -0.000898
2017-11-13 NaN
2017-11-14 -0.002310
输出只是一个 NaN 列表。
我做错了什么?
谢谢!
似乎是 pandas 中的错误。
试试这个:
a[a!=0].rolling(window=100, center=False, min_periods=1).median()
由于 a 是 Dataframe 而不是 Series,如果您尝试进行索引,您将得到 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
当我尝试查找以下系列的滚动中位数时,我得到了一个 NaN 列表。
我用过:
b = a[a!=0].rolling(100).median()
a = 实际数据系列(数据框)。里面有一堆零,我想在找到中位数时排除这些零
b = 滚动中位数
a[a!=0] 给我以下系列。
2017-10-05 NaN
2017-10-06 -0.001074
2017-10-09 -0.001804
2017-10-10 NaN
2017-10-11 NaN
2017-10-12 -0.001687
2017-10-13 NaN
2017-10-16 NaN
2017-10-17 NaN
2017-10-18 NaN
2017-10-19 NaN
2017-10-20 NaN
2017-10-23 -0.003972
2017-10-24 NaN
2017-10-25 -0.004663
2017-10-26 NaN
2017-10-27 NaN
2017-10-30 -0.003192
2017-10-31 NaN
2017-11-01 NaN
2017-11-02 NaN
2017-11-03 NaN
t2017-11-06 NaN
2017-11-07 -0.000189
2017-11-08 NaN
2017-11-09 -0.003762
2017-11-10 -0.000898
2017-11-13 NaN
2017-11-14 -0.002310
输出只是一个 NaN 列表。
我做错了什么? 谢谢!
似乎是 pandas 中的错误。
试试这个:
a[a!=0].rolling(window=100, center=False, min_periods=1).median()
由于 a 是 Dataframe 而不是 Series,如果您尝试进行索引,您将得到 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