2014-10-30 3 views
1

팬더 데이터 프레임의 셀에 새 값을 할당하는 더 빠른 방법이 다른 셀의 값에 적용되는지 궁금합니다.팬더 데이터 프레임에 새 값을 할당하는 더 빠른 방법

df = pd.DataFrame({'rank':[1, 1, 1, 1, 2, 2, 2, 2], 'condition':[.01, .01, .01, .01, .01, .01, .01, .01]}) 

다음 코드는 작동 :

def changerank(row): 
    if (row['condition'] == 0) & (row['rank'] > 1): 
     row['rank'] = 1 
    return row 

df = df.apply(changerank, axis=1) 

를하지만 수백만 개의 행을 포함하는 내 진짜 dataframe에 다소 느리다 예를 들어, DF을. 행의 값에 따라 '순위'의 값을 변경하는 또 다른 방법이있는 것처럼 느껴집니다.

아무쪼록 고마워!

답변

3

당신은 .ix를 사용할 수 있습니다

df.ix[(df.condition==0) & (df.rank>1), 'rank'] = 1 

나는 loc도 여기에 대신 ix의 작업을 할 수 있습니다 생각합니다.

+0

나는 당신을 상상할 수있는 충분한 담당자가 없지만 굉장합니다. 그게 바로 제가 찾고 있던 것이 었습니다! 빨리. –

관련 문제