2013-01-12 2 views
4

팬시 색인을 통해 필터링 한 후 팬더 데이터 프레임에 변경 사항을 병합하는 가장 간단한 방법은 무엇입니까?팬더 색인 생성 및 병합

예를 들어, 두 개의 열이 X 및 Y와 dataframe을 정의하고, x는 짝수 정수, 그리고 0

d = pd.DataFrame({'x':range(10), 'y':range(11,21)}) 
d[d.x % 2 == 0]['y'] = 0 

은 "멋진에게로 (Y)에 대응하는 값을 설정 여기서 모든 행을 선택 인덱싱 "부울 쿼리는 데이터 프레임의 복사본을 생성하므로 변경 사항이 원래 데이터 프레임으로 다시 전파되지 않습니다. 이 작업을 수행하는 것이 더 낫습니까?

현재의 해결책은 멋진 부울 인덱스를 기반으로 임시 데이터 프레임을 정의하고 w에서 'y'의 해당 값을 0으로 설정 한 다음 w를 인덱스를 사용하여 d로 병합합니다.

w = d[d.x % 2 == 0] 
w.y = 0 

답변

3

사용 DataFrame.ix [] :

In [21]: d 
Out[21]: 
    x y 
0 0 11 
1 1 12 
2 2 13 

In [22]: d.ix[d.x % 2 == 0, 'y'] = -5 

In [23]: d 
Out[23]: 
    x y 
0 0 -5 
1 1 12 
2 2 -5 
이 일을 더 효율적 (잘하면 더 직접적인) 방법이 있어야합니다