2016-03-25 18 views
1

Using Pandas documentationSütun değeri için pct_change

http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.pct_change.html

Bu işlevi, yüzde_change değerini hesaplamak için oluşturmaya çalışıyorum. Ben

def PCT(df,n): 
     d = df['Close'].pct_change(n) 

bile farklı bir şekilde aynı kodu yeniden yazmayı kendisine iki paramters geçmesi bana aynı hata vermek

P = pd.Series(df['Close'].pct_change(n), name = 'PCT_' + str(n)) 
  1. Ben% değiştireceğim istediğiniz üzerinde dataframe
  2. pencere

Bu hata atılıyor

File "D:\Python Scripts\TA_Liabrary.py", line 15, in PCT 
    d = df['Close'].pct_change(n) 
TypeError: 'NoneType' object has no attribute '__getitem__' 

birileri belgelerde olduğu gibi

Index open high low close volume adj. 
1/01/2014 54.97 54.97 54.97 54.97 0 49.31993 
2/01/2014 55.1 55.95 54.86 55.08 216100 49.41862 
3/01/2014 54.5 55 54.16 55 392600 49.34685 
6/01/2014 54.82 55.47 54.62 55.14 344500 49.47245 
7/01/2014 55.06 55.17 54.27 54.35 677400 48.76365 
8/01/2014 54.64 54.88 53.87 54.38 587500 48.79057 
9/01/2014 54.57 54.8 54.05 54.48 466800 48.88029 

cevap

3

Neden işlevini kullanamazsınız Bu

örnek verilerinde bana yardım eder misiniz? Bir fonksiyonla

a = [10,12,13] 
b = [12,11,14] 
d = {'open': a, 'close': b} 

df = DataFrame(data=d) 
print df 

    close open 
0  12 10 
1  11 12 
2  14 13 

print df.pct_change(1) 

sıralama şu şekildedir:

def PCT(dataf,n): 
     return dataf.pct_change(n) 

print PCT(df, 1) 

İkisi döndürür:

 close  open 
0  NaN  NaN 
1 -0.083333 0.200000 
2 0.272727 0.083333 

Ve örnek verilerin print PCT(df['close'], 1) ile

döndürür:

Index   close 
2014-01-01   NaN 
2014-02-01 0.002001 
2014-03-01 -0.001452 
2014-06-01 0.002545 
2014-07-01 -0.014327 
2014-08-01 0.000552 
2014-09-01 0.001839 
+0

Onu istiyorum sadece close_price üzerinde hesaplamak için – nnnnmmm

+0

tamam mı? bu yüzden df'yi yakın sütun olarak mı değiştirmelisiniz? 'print PCT (df ['close'], 1)' – Deusdeorum

+0

Daha önce karşılaştığım bu hatayı atıyor. result [mask] = op (xrav, yrav) TypeError: ufunc true_divide, dtype (' nnnnmmm

İlgili konular