2016-04-03 12 views
4

私はファイナンスのための本のpythonから次のコードを持っています。しかし、numpyのラウンド関数は、 "return round(decimals、out)"のようなエラーを引き起こします。 TypeError:round()は最大2つの引数(3が与えられます) "python numpyラウンド関数の奇妙なエラー

誰かが私が間違っていることを知っていますか?エラーメッセージに基づいて

import numpy as np 
import pandas as pd 
import pandas.io.data as web 

sp500 = web.DataReader('^GSPC', data_source='yahoo', 
          start='1/1/2000', end='4/14/2014') 
sp500.info() 
sp500['Close'].plot(grid=True, figsize=(8, 5)) 

sp500['42d'] = np.round(pd.rolling_mean(sp500['Close'], window=42), 2) 
+0

あなたはどのバージョンのパンダを使用していますか? – Alexander

+0

それは与えられたように私のために働く、2つの場所へのラウンド。もっと重要なのは、2つの引数をきちんと正しく提供していることだけです。 – roadrunner66

+0

も私のために働いた。 – Hun

答えて

3

numpy 1.11.0に、丸め関数は次のようになりますようだ:

try: 
    round = a.round 
except AttributeError: 
    return _wrapit(a, 'round', decimals, out) 
return round(decimals, out) 

pandas.Series.roundは2つのだけの引数(selfprecisionを)かかりますが、numpyがあるように見えます追加の引数outを渡します。恐らくこれはバグかAPIの変更で、pandasまたはnumpyです。

2つの簡単な回避策があります。最初はただ直接Series.round()機能を使用することです:

sp500['42d'] = pd.rolling_mean(sp500['Close'], window=42).round(2) 

他のオプションは、単に基本的なnumpyの配列にnumpy.round関数を適用することです。

sp500['42d'] = np.round(pd.rolling_mean(sp500['Close'], window=42).values, 2) 

編集:これがあるように見えます既知の問題。 the pandas github tracker, issue #12644を参照してください。

関連する問題