2014-07-13 2 views
2

Dataframe :팬더의 버그 일 수 있습니다. 보고해야합니까? 그리고 어떻게? 그래서 같은

view = {'objectid' : [474479]*5, 
    'n' : [1, 3, 4, 5,6]} 

실행 한 후 :

view['n'][10] = 5 

더 이상의 변경은 할 수 없습니다 '스틱'. 즉 :

view['n'][4] = 1000 
view['n'][1] = 7 

반환 :이 같은 상황에 대한 프로토콜을 모르는

view 
    n, objectid 
0, 1, 474479 
1, 2, 474479 
2, 3, 474479 
3, 4, 474479 
4, 5, 474479 

. 첫째, 색인 범위 오류가없고 둘째, 향후 업데이트가 작동하지 않는다는 것입니다. 은 나에게 버그처럼 보입니다. 하지만, 나는 이것이 내가 적절한지 확인하기 위해 먼저 stackoverflow에 게시해야하는 그런 새로운 프로그래머이다. 만약 그렇다면 무엇을해야 하는가?

양해 해 주셔서 감사합니다. the docs이에 대한 경고가

답변

3

: 복사 또는 참조가 설정 작업에 대해 반환 여부

는 는 상황에 따라 달라질 수 있습니다. 이를 체인 할당이라고도하며, 은 피해야합니다. Returning a View versus Copy

보기가 아닌 시리즈 사본을 반환합니다. 따라서 변수 이름에도 불구하고 복사본을 수정해도 원래 DataFrame 인 view에는 영향을주지 않습니다.

어떤 표현식이 사본이나보기를 반환하는지 예측하기 어렵 기 때문에 "연결 할당"은 피해야합니다. 대신, loc 또는 ix처럼 인덱서에 할당 :

In [79]: view.ix[0, 'n'] = 999 

In [80]: view 
Out[80]: 
    n objectid 
0 999 474479 
1 3 474479 
2 4 474479 
3 5 474479 
4 6 474479 

In [81]: view.ix[10, 'n'] = 5 

In [82]: view 
Out[82]: 
     n objectid 
0 999 474479 
1  3 474479 
2  4 474479 
3  5 474479 
4  6 474479 
10 5  NaN 

PS합니다. Pandas은 github에서 개발되었습니다. 나중에 버그를 발견하면 report the issue there 수 있습니다.

관련 문제