다음과 같이 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] 삭제
몇 마디 만하겠습니다