I이처럼 MultiIndex 데이터를 가지고팬더 의해 반환 인덱스 압연 요약 기능 GROUPBY 제어 방법
In[]: df.groupby(level=0).sum()
Out[]:
A B C D
first
X 1.931866 0.959640 1.194453 1.071071
Y 1.358631 1.020971 1.939855 1.791824
Z 1.750776 1.584590 0.909725 1.529326
: 여기
import itertools
idx1 = list('XYZ')
idx2 = range(3)
idx = pd.MultiIndex.from_tuples(list(itertools.product(idx1,idx2)))
df = pd.DataFrame(np.random.rand(9,4), columns=list('ABCD'), index=idx)
A B C D
first second
X 0 0.808432 0.708881 0.411515 0.704168
1 0.322688 0.093869 0.651238 0.146480
2 0.800746 0.156890 0.131700 0.220423
Y 0 0.102290 0.129895 0.939147 0.510555
1 0.462014 0.749873 0.585867 0.357788
2 0.794327 0.141203 0.414841 0.923480
Z 0 0.557513 0.768428 0.487475 0.824503
1 0.258303 0.115791 0.102588 0.062753
2 0.934960 0.700371 0.319663 0.642070
첫번째 인덱스 레벨 위에기로 합산 결과
합리적으로 보입니다 - 색인의 첫 번째 레벨에서 합산되어 두 번째 레벨이 사라졌습니다. 내가 어떤 이유로 팬더의 첫 번째 레벨을 반복, 3 수준의 인덱스를 반환하기로 결정했다
A B C D
first first second
X X 0 NaN NaN NaN NaN
1 1.131120 0.802750 1.062753 0.850648
2 1.123434 0.250759 0.782938 0.366903
Y Y 0 NaN NaN NaN NaN
1 0.564303 0.879768 1.525014 0.868343
2 1.256341 0.891075 1.000708 1.281269
Z Z 0 NaN NaN NaN NaN
1 0.815816 0.884219 0.590062 0.887256
2 1.193263 0.816162 0.422251 0.704823
을 얻을
df.groupby(level=0).rolling(2).sum()
:하지만 그 대신 만약 내가 rolling
방법을 사용합니다. 왜 이런 일이 일어나는 걸까요? 내 코드를 작성하는 더 좋은 방법이 없으므로 그렇게하지 않습니까?
또한 첫 번째 레이블이 반복되므로 결과에 reset_index()
을 호출하면 ValueError: cannot insert first, already exists
이되므로 반복되는 인덱스를 삭제하는 방법을 알 수 없습니다. 어떤 팁?
고마워. 웬일인지 내 실제 데이터에서 작동하지 않습니다. 나는 몇 초 만에 실제 데이터에 대한 링크를 게시하려고 노력할 것이다. 이 기능이 작동하지 않을 것으로 예상되는 경우가 있습니까? – itzy
나는 어떤 경고도 알지 못하므로 문제를 재현하는 예제를 보는 데 관심이있다. 어쨌든 나는 '물결 모양'을 사용하는 대안적인 방법을 추가했다. – unutbu
감사합니다. 매우 도움이됩니다. 'group_keys = False'로 보일지라도'df [ 'A']보다는'df.groupby() [ 'A'] ... '를하면 여분의 키를 얻습니다. . 이것이 설계 상 또는 버그인지 확실하지 않은 -이 출력이 같아야합니다. – itzy