판다의 다중 인덱스 정렬
panddf에 다중 인덱스 열이 있는 데이터셋이 있는데 특정 열의 값으로 정렬하고 싶습니다.내 데이터 집합은 다음과 같습니다.
Group1 Group2
A B C A B C
1 1 0 3 2 5 7
2 5 6 9 1 0 0
3 7 0 2 0 3 5
모든 데이터와 인덱스를 열별로 정렬하고 싶습니다.C
인에Group 1
결과가 다음과 같이 나타날 수 있도록 내림차순으로 정렬합니다.
Group1 Group2
A B C A B C
2 5 6 9 1 0 0
1 1 0 3 2 5 7
3 7 0 2 0 3 5
데이터가 있는 구조로 이러한 정렬을 수행할 수 있습니까? 아니면 스왑해야 합니까?Group1
인덱스 쪽으로?
MultiIndex로 정렬할 때 목록 내부에 열을 설명하는 튜플을 포함해야 합니다*:
In [11]: df.sort_values([('Group1', 'C')], ascending=False)
Out[11]:
Group1 Group2
A B C A B C
2 5 6 9 1 0 0
1 1 0 3 2 5 7
3 7 0 2 0 3 5
* 팬더들을 혼란스럽게 하지 않기 위해 그룹 1로 먼저 정렬하고 C로 정렬하고 싶다고 생각합니다.
참고: 원래는 사용하지 않다가 0.20에서 삭제되었습니다.
열을 인덱싱하여 정렬할 수 있습니다(예: 세 번째 열 등).또한 대괄호가 필요 없기 때문에 열을 색인하는 튜플이 작동합니다.
# sort in descending order by the third column df.sort_values(('Group1', 'C'), ascending=False) df.sort_values(df.columns[2], ascending=False) # same as above
여러 열로 정렬하려면 튜플 목록을 사용하거나 단순히 열을 색인화합니다.또한 목록을 다음으로 전달할 수 있습니다.
ascending
해당 열에서 정렬 오름차순으로 할지 여부를 선택합니다.# sort by (Group1, B) in descending order and (Group1, A) in ascending order df.sort_values(by=[('Group1', 'B'), ('Group1', 'A')], ascending=[False, True]) df.sort_values(df.columns[[1, 0]].tolist(), ascending=[False, True])
다중 인덱스 데이터 프레임을 정렬할 코드를 찾으려면
sort_index
. 예를 들어, 두 번째 수준을 내림차순으로 정렬하고 첫 번째 수준을 오름차순으로 정렬하려면:# select levels by name df.sort_index(level=['Name', 'Groups'], ascending=[True, False]) # select levels by index (this works even if indices are unnamed) df.sort_index(level=[1, 0], ascending=[True, False])
언급URL : https://stackoverflow.com/questions/14733871/multi-index-sorting-in-pandas
'programing' 카테고리의 다른 글
스위프트 : 캐릭터의 시작부터 마지막 인덱스까지 하위 문자열을 얻는 방법 (0) | 2023.10.22 |
---|---|
MYSQL - 각 테이블의 행 개수 수 (0) | 2023.10.22 |
compound 'if' 조건을 쓰는 더 짧은 방법이 있습니까? (0) | 2023.10.17 |
시스템 충돌 후 Unit Of Work 예외 발생 (0) | 2023.10.17 |
Amazon RDS 내에서 실행 중인 MySQL의 프로세스를 삭제하려면 어떻게 해야 합니까? (0) | 2023.10.17 |