Pandas 데이터 프레임의 다중 인덱스에서 외부 수준 인덱스를 변경하는 방법은 무엇입니까?

차 나캬

다음과 같이 9 백만 개의 행이있는 다단계 인덱스가있는 데이터 프레임이 있습니다. 어떤 경우에는 고유하지 않은 0 레벨 인덱스를 고유 인덱스를 포함하는 숫자 순서로 변경하고 싶습니다. 다음은 샘플 입력입니다.

ORDER             NO         DATE
4200000303        1          2015-02-19
                  2          2015-02-19
                  3          2015-02-19
1200000303        1          2016-07-19
                  2          2016-07-19
                  3          2016-07-19
                  4          2016-07-19
1500000303        1          2017-08-19
                  2          2017-08-19
                  3          2017-08-19
                  4          2017-08-19
x8594345 rows

원하는 출력은 다음과 같아야합니다.

ORDER             NO         DATE
0                 1          2015-02-19
                  2          2015-02-19
                  3          2015-02-19
1                 1          2016-07-19
                  2          2016-07-19
                  3          2016-07-19
                  4          2016-07-19
2                 1          2017-08-19
                  2          2017-08-19
                  3          2017-08-19
                  4          2017-08-19
x8594345 rows

다음 코드를 시도했습니다.

transactions.index = pd.MultiIndex.from_arrays(
    [list(range(0,transactions.shape[0])), transactions.groupby(level=0).cumcount()],
    names=['ORDER', 'NO'])

그러나 평평한 데이터 프레임을 반환합니다.

이스 르엘

사용 factorize에만 첫 번째 수준에 의해 :

transactions.index = pd.MultiIndex.from_arrays(
                              [pd.factorize(transactions.index.get_level_values(0))[0],
                               transactions.index.get_level_values(1)],
                              names=['ORDER', 'NO'])

print (transactions)
ORDER  NO
0      1     2015-02-19
       2     2015-02-19
       3     2015-02-19
1      1     2016-07-19
       2     2016-07-19
       3     2016-07-19
       4     2016-07-19
2      1     2017-08-19
       2     2017-08-19
       3     2017-08-19
       4     2017-08-19
Name: A, dtype: object

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관