2016-04-03 27 views
4

Finans için kitap pythonundan aşağıdaki kodu kullanıyorum. Ama numpy yuvarlama işlevi "dönüş yuvarlak (ondalık, dışarı)" gibi bir hataya neden oluyor TypeError: round() en çok 2 bağımsız değişkeni (3 verilen) alır "python numpy yuvarlak işlev garip hatası

Herkes yanlış yaptığımı biliyor?

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

pandas.Series.round sadece iki argüman (self, precision) alır gibi görünüyor, ama numpy geçerli:

hata mesajı dayanarak
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

Hangi pandaları kullanıyorsunuz? – Alexander

+0

Bana verilen gibi çalışır, 2 yere yuvarlar. Daha da önemlisi, sadece 2 argüman, oldukça doğru bir şekilde sağlıyorsunuz. – roadrunner66

+0

benim için de çalıştı. – Hun

cevap

3

, numpy 1.11.0 yılında, yuvarlama fonksiyonu şöyle görünüyor ek bir argüman geçerek, out. Muhtemelen bu, pandas veya numpy'da bir hata veya API değişimidir.

Gördüğüm iki basit çözüm var. İlk sadece doğrudan Series.round() işlevini kullanmaktır:

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

Diğer seçenek sadece altta yatan numpy diziye numpy.round fonksiyonunu uygulamaktır:

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

Düzenleme: Bu bir Görünüşe bilinen sorun. Bakınız the pandas github tracker, issue #12644.