3
내 데이터 분석은 단순하지만 iffy 모티프, 즉 "groupby everything except"로 반복됩니다. df
이 다중 색인 예를 보자팬더의 하나의 색인 열을 제외한 모든 그룹화
accuracy velocity
name condition trial
john a 1 -1.403105 0.419850
2 -0.879487 0.141615
b 1 0.880945 1.951347
2 0.103741 0.015548
hans a 1 1.425816 2.556959
2 -0.117703 0.595807
b 1 -1.136137 0.001417
2 0.082444 -1.184703
. 쉽게 달성 할 수 있습니다 :
average = df.groupby(level=('name', 'condition')).mean()
그러나 실제 상황에서는 멀티 색인에 훨씬 많은 메타 데이터가 저장되어 있습니다. 색인은 행당 8-10 개의 행을 쉽게 포함합니다. 따라서 위의 패턴은 매우 다루기 힘들어집니다. 궁극적으로 "폐기"작업을 찾고 있습니다. 단일 인덱스 열을 버리거나 줄이는 작업을 수행하려고합니다. 위의 경우에는 시범 번호입니다.
글 머리 기호를 물어봐야하나요? 아니면 이것에 대해 좀 더 관용적 인 방법이 있습니까? 이것은 안티 패턴 일 것입니다! 나는 "진실한 판다"방법에 관해서 알맞은 직감을 구축하고 싶다 ... 미리 감사드립니다.
당신은 이것에 대한 도우미 기능을 정의 할 수
이것은 좋아 보인다. 나는 그 선을 따라 뭔가를 사용 해왔다. 당신은 패턴 자체가 소리라고 생각합니까? 동일한 결과를 얻는 "내장"방식이 더 있습니까? – ap3l
'df.groupby (level = list (set (levels) - { 'name'})). mean()'과 같은 변형이 많이 있는데, 기본적으로 모두 같은 양이라고 생각합니다. - 특히 적은 수의 레벨의 경우. 더 "기본 제공"방식이 있다고 생각하지 않으므로 도우미 기능을 정의하는 것이 코드를 읽기 쉽게 만드는 가장 좋은 방법입니다. – unutbu