2016-11-01 2 views
3

특정 열 'df1'에 대한 현재 행의 값이 이전 5 행의 낮은 고위 범위 값 (2 개의 나란히있는 열) 사이에있는 횟수를 계산하려고합니다. 이것은 후속 질문입니다 - Dickster는 이미 무거운 짐을 here했습니다.python pandas- AttributeError : 'Series'객체에 'columns'속성이 없습니다?

Series(). between() 메서드가 협조하지 않아 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

관련 문제