2017-03-29 1 views
0

부울 인덱스의 참조 점을 기준으로 범위를 선택하는 좋은 방법은 무엇입니까?팬더 데이터 프레임을 사용하여 booelan 인덱스와 관련된 범위 생성하기

dates = pd.date_range('1/1/2000', periods=10) 
df = pd.DataFrame(np.empty([10, 3]), index=dates, columns=['A', 'B','C']) 
df.iloc[:3,0] = 100 
df.iloc[3:7,0] = 200 
df.iloc[7:,0] = 300 
df.iloc[:5,1] = 400 
df.iloc[5:,1] = 500 
df.iloc[:7,2] = 600 
df.iloc[7:,2] = 700 

하고 부울 dataframe :

df1 = [df!=df.shift(1)] 

내가 논리 값은 이전의 3 셀 범위를 채우는 싶습니다 예를 들어

, 나는 다음과 같은 dataframe, DF이 있다고 가정 참된.

참조를 기준으로 부울 범위를 가져 오는 한 줄짜리 방법이 있습니까? 결과는 다음과 같이 보일 것입니다 :

   A  B  C 
2000-01-01 False False False 
2000-01-02 True False False 
2000-01-03 True False False 
2000-01-04 True True False 
2000-01-05 False True False 
2000-01-06 True True True 
2000-01-07 True False True 
2000-01-08 True False True 
2000-01-09 False False False 
2000-01-10 False False False 
+0

열 C에 happenes 무엇을? 또한 * 3 셀에 대해 시계열 *의 변화에 ​​대해 더 설명 할 수 있습니까? – Psidom

+0

최근 편집을 통해 질문에 답변했습니다. 불명확 한 것이 있으면 알려주세요. – trob

답변

1

당신은 제한 매개 변수를 사용하여 bfill (역 충전) 방법을 사용할 수 있습니다 :

df.shift().where(df.diff() != 0, pd.np.nan).bfill(limit=2).fillna(0).astype(bool) 

enter image description here

관련 문제