2016-11-01 20 views
3

我正在嘗試計算特定列'df1'的當前行值落在前5行(2列並排)中的低 - 高範圍值之間的次數。這是一個後續問題 - Dickster已經完成了繁重的工作herepython pandas- AttributeError:'Series'對象沒有屬性'columns'?

The()。之間()方法不合作,抱怨AttributeError: 'Series' object has no attribute 'columns'。我不明白我是如何涉及columns屬性。

list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[28,108],[30,102],[26,106],[25,111],[24,110]] 
dict1 = {} 
dict1['df1'] = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB')) 
dict1['df2'] = pd.DataFrame(dict1['df1'] * (1-.05)) 
pan_so = pd.Panel(dict1) 
pan_so = pan_so.transpose(2,1,0) 

x = pan_so.ix[0,:,:] 
def btwn(x): # x is a dataframe 
    y = x['df1'].rolling(center=False,window=6) 
    z = x['df2'].rolling(center=False,window=6) 
    x['cnt_btwn'] = pd.Series(pd.Series(y[:-1]).between(z[-1], y[-1], inclusive=True).sum()) 
    return x 
btwn(x) 

我在做什麼錯?謝謝!

回答

3

這個y[:-1]可以訪問不支持列索引的Rolling對象,也就是代碼中[:-1]的含義。您應該應用轉換函數並在過濾之前獲取實際系列。

+2

嗨佈德 - 可能是一個更具體的轉換函數? – MJS

+0

像平均最大計數等等,我不清楚爲什麼你把這樣的[:-1]放在那裏,前面的問題很難讀取;我所知道的是,雖然y是一個滾動對象,而不是一個系列,所以你不能在指定的位置調用 – Boud

+0

我想將「當前」行數據與一個滾動窗口[curr-6: curr-1],所以[:-1]就是隔離當前行。謝謝你讓我走上正確的道路。 – MJS

相關問題