2013-11-03 2 views
0

이 질문은 this question에서 영감을 받았습니다. 동일한 문제가 발생하여 MultiIndex DataFrame을 선택 항목으로 업데이트했습니다. 팬더 0.13의 drop_level=False 솔루션을 사용하면 동일한 결과를 얻을 수 있지만 멀티 인 덱스 DataFrame에서 뷰를 가져올 수없는 이유는 아직도 궁금합니다. 즉, 이유는 물론MultiIndex DataFrame의 뷰를 검색하는 방법

>>> sat = d.xs('sat', level='day', copy=False) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2248, in xs 
    raise ValueError('Cannot retrieve view (copy=False)') 
ValueError: Cannot retrieve view (copy=False) 

그것을 구현되지 않은 경우에만 때문에 수? 작동하지,하지만 이유가 무엇입니까? 구현하기가 모호하거나 불가능합니까? 뷰를 반환하는 것은 복사본을 반환 한 다음 나중에 원본을 업데이트하는 것보다 더 직관적입니다. 나는 소스를 들여다 보았고,이 상황이 명시 적으로 오류를 일으키는 지 확인했다.

또는 다른 인덱싱 방법에서 동일한 종류의보기를 가져올 수 있습니까? 나는 실험했지만 성공하지 못했습니다.

[편집] 일부 구현은 here으로 논의됩니다. 위의 마지막 질문으로 나는 현재 최상의 솔루션은 임의의 multiindex 슬라이스와 횡단면으로 색인을 지정하는 것입니다.

답변

0

다중 dtype 프레임에서 이것은 전혀 가능하지 않습니다. 하나의 dtyped 프레임조차도 2 numpy만큼 올라 가기 때문에 비 결정적입니다.

xs을 사용하여보기가 가능할지라도 기본적으로 항상 사본을 반환하는 것을 고려 중입니다. 문제는이 생각을 수정하려고 시도하는 것이 매우 쉽다는 것입니다. 실제로 복사를 작업 할 때 (또는 그 반대가 될 수있는 경우) 기본 데이터를 실제로 수정하고있는 것입니다.

은 (참고로이 오류도 0.13에서 제거되고 대신에 당신이 그것을 수정하려고하면 경고/올릴 것이다)

는 변경이 here를 참조하십시오.

+0

제대로 이해하고 있는지 확인하십시오. 저수준 구현 세부 사항 때문에 불가능하다고 말하는 것입니까? 우리가 주제를 다루는 동안 - 색인 레이블 인 키와 함께 사전에 의한 색인을 허용하는 논의가 있습니까? 내 코드는 사용자의 지시를 받도록 설정되어 있지만 인덱스 및 레이블 목록의 튜플로 변환하려면 추한 변환을해야합니다. 마찬가지로 MultiIndex DataFrames의 하위 집합을 사용하여 우아한 방식으로 작업하는 것처럼 보이지 않습니다. – ontologist

+0

보기는 본질적으로 다른 데이터 블록에 대한 시작/중지 포인터입니다. 근본적으로 무엇을 요구하는지 임의로 (공상적인) 색인 생성으로 이것을 수행하는 것은 일반적으로 불가능합니다. 2 귀하의 두 번째 질문으로 내가 무엇을 묻는 지 모르겠다. – Jeff

+0

답변 해 주셔서 감사합니다. 나는이 주제에 관해 조사해 왔고 나의 두 번째 질문은 [이 향상 요청] (https://github.com/pydata/pandas/issues/4036)에서 제기 된 문제들을 언급하고 있다고 생각합니다. 그것이 실행의 문제인 것처럼 보이는 것에 따라 나는 pandas를 따라갈 것이고, 잘만되면 언젠가 나는 나 자신으로 기여할 기술이있을 것이다. – ontologist