2017-11-16 10 views
1

次のシリーズのローリングメジアンを見つけようとすると、NaNのリストが表示されます。ゼロを除くローリングウィンドウの中央値

Iが使用:

b = a[a!=0].rolling(100).median() 

=実際のデータ系列(データフレーム)を。私は[!= 0]は私に、次のシリーズを与える中央

ローリング中央

B =を見つけたときに除外したい、それにゼロの束を持っています。

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をのリストだけです。

何が間違っていますか? ありがとうございます!

+0

のインデックスを作成しながら、カラム名を指定することで、これを扱うことができますか?パンダのどのバージョンですか? –

+0

aは、数多くのゼロが入った数字のリストです。それはデータフレームです。 – helloworldlevel

+0

私は0.20.3を使用しています – helloworldlevel

答えて

2

パンダのバグのようです。

これを試してください:あなたがインデックス作成を行うにしようとした場合

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

これは非常に近いです。私のために十分に良い!結果は、私が優秀なものとやや異なる。 – helloworldlevel

+0

バグではありません。 [** @ Vaishali **](https://stackoverflow.com/a/47322255/2336654)は彼女の記事でそれを説明しています。 – piRSquared

+0

私は何が優れているのか分かりませんし、あなたには再生のための十分なデータを与えていません。 'center = True'と一緒に使ってみてください。 – wim

3

をDATAFRAMEしていないシリーズですので、あなたは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)) 

そうで開始するA` `に何

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

@piRSquaredしかし、 'DataFrame.median'はデフォルトでnanを無視し、ローリングウィンドウはmedianのためにsuperに委譲するだけなので、デフォルトではnanも無視しなければなりません。明示的にkwarg 'skipna = True'を渡そうとすると、Cコードのどこかでクラッシュします。私はまだそのバグ、または少なくとも悪い驚きと呼んでいます... – wim

+0

@ウィムは厄介な驚きです。私は今チェックしている。しかし、OPによると 'np.nan'は予期せぬことに現れた。そして、この投稿は理由を説明します。 OPがブール値の系列でフィルタリングされていれば、彼らは 'np.nan'を手に入れていなかったでしょう。それは悪いと思うので、私はあなたが示唆しているものをチェックしている! – piRSquared

+1

@ piRSquared、私はこの最後の夜にすべてのアクションを逃して、100Kのおめでとう! – Vaishali