판다 멀티 인덱스를 컬럼으로 변환
두 가지 인덱스 레벨의 데이터 프레임이 있다.
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
이걸로 바꾸고 싶네
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
어떻게 하면 가장 좋을까?
여기서 지시하는 대로 데이터를 집계하고 싶기 때문에 이것이 필요하지만, 내 칼럼이 지수로 사용되고 있다면 그렇게 선택할 수 없다.
reset_index()는 인덱스 값을 데이터프레임에 컬럼으로 전송하는 판다 데이터프레임 방식이다.파라미터의 기본 설정은 drop=False(인덱스 값을 열로 유지함)이다.
전화만 하면 된다..reset_index()
DataFrame 이름 뒤에 표시:
df = df.reset_index()
이것은 당신의 경우에는 실제로 적용되지 않지만 다른 사람들(예: 5분 전 나)이 아는 데 도움이 될 수 있다.다중 인덱스의 이름이 다음과 같은 경우:
value
Trial Trial
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
df.reset_index(inplace=True)
생성된 열의 이름이 같을 수 없기 때문에 실패함
그러면 다중 인덱스의 이름을 다음으로 변경하십시오.df.index = df.index.set_names(['Trial', 'measurement'])
다음을 얻으려면:
value
Trial measurement
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
그리고 나서df.reset_index(inplace=True)
매력적으로 작용할 거야
나는 데이터 시간 컬럼(인덱스가 아님)에서 년도와 월별로 그룹화한 후 이 문제를 만났다.live_date
, 그것은 년과 달이 모두 이름지어졌다는 것을 의미했다.live_date
.
설명에서 언급한 @cs95와 같이 한 수준만 삭제하려면 다음을 사용하십시오.
df.reset_index(level=[...])
이렇게 하면 재설정 후 원하는 인덱스를 다시 정의할 필요가 없다.
다음과 같은 상황이 있을 수 있다.df.reset_index()
사용할 수 없음(예: 인덱스가 필요할 때도).이 경우 사용index.get_level_values()
인덱스 값에 직접 액세스하려면:
df['Trial'] = df.index.get_level_values(0)
df['measurement'] = df.index.get_level_values(1)
이렇게 하면 인덱스 값이 개별 열에 할당되고 인덱스가 유지된다.
자세한 내용은 문서를 참조하십시오.
칼의 문제도 우연히 마주쳤다.나는 단지 내가 집계된 칼럼의 이름을 바꾸고 색인을 재설정하는 것을 발견했다.
df = pd.DataFrame(df.groupby(['arms', 'success'])['success'].sum()).rename(columns={'success':'sum'})
df = df.reset_index()
참조URL: https://stackoverflow.com/questions/20110170/turn-pandas-multi-index-into-column
'Programing' 카테고리의 다른 글
Vue.js 하위 구성 요소에서 모달 닫기 (0) | 2022.03.09 |
---|---|
바이트를 문자열로 변환 (0) | 2022.03.09 |
Android에서 네이티브 작동 속도가 매우 느림 (0) | 2022.03.09 |
VueJS 조건부로 요소의 속성 추가 (0) | 2022.03.09 |
Vue에서 여러 구성 요소 유형 목록 렌더링 (0) | 2022.03.09 |