Programing

판다 멀티 인덱스를 컬럼으로 변환

c10106 2022. 3. 9. 09:47
반응형

판다 멀티 인덱스를 컬럼으로 변환

두 가지 인덱스 레벨의 데이터 프레임이 있다.

                         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

반응형