2017-10-11 17 views
6

浮動小数点数を無限に近づけるとパンダが回転するのにエラーが発生します。ここに例を示します:pandas.DataFrame.rollingが巨大な浮動小数点数を使用していません

import pandas as pd 
series = pd.Series(1.,index = pd.date_range('2015-01-01', periods=6)) 
series[series.index[2]] = 1e19 
series 
2015-01-01 1.000000e+00 
2015-01-02 1.000000e+00 
2015-01-03 1.000000e+19 
2015-01-04 1.000000e+00 
2015-01-05 1.000000e+00 
2015-01-06 1.000000e+00 
Freq: D, dtype: float64 
series.rolling('2D', closed = 'left').mean() 
2015-01-01    NaN 
2015-01-02 1.000000e+00 
2015-01-03 1.000000e+00 
2015-01-04 5.000000e+18 
2015-01-05 5.000000e+18 
2015-01-06 5.000000e-01 
Freq: D, dtype: float64 

最後のビットの答えは1です。 0.5です。大きな数字を使用すると、なぜローリングが起こるのでしょうか?小さなフロートの同じ例:

series[series.index[2]] = 1e9 
series.rolling('2D', closed = 'left').mean() 
2015-01-01   NaN 
2015-01-02   1.0 
2015-01-03   1.0 
2015-01-04 500000000.5 
2015-01-05 500000000.5 
2015-01-06   1.0 
Freq: D, dtype: float64 
+0

.sum()でテストして、何が起こったかを確認します。最後のエントリは1になりますが、2になるはずです。1e19を小さい番号に変更すると、ローリングウィンドウの外にあっても問題は解決され、効果はありません。非常に奇妙な行動!おそらく、[pandas github](https://github.com/pandas-dev/pandas/issues)に発行チケットを提出しますか? –

答えて

1

問題はパンダではありません。私はrollmean機能でRで同じことを試みました。それはパンダと全く同じ結果をもたらします。 1e16以上の値では機能しません。私はそれがシステムが浮動小数点を扱う方法と関係していることです。

関連する問題