반응형
데이터 프레임 정렬 후 인덱스 업데이트
다음 데이터 프레임을 사용합니다.
x = np.tile(np.arange(3),3)
y = np.repeat(np.arange(3),3)
df = pd.DataFrame({"x": x, "y": y})
x y
0 0 0
1 1 0
2 2 0
3 0 1
4 1 1
5 2 1
6 0 2
7 1 2
8 2 2
다음 기준으로 분류해야 합니다.x
첫째로, 그리고 둘째로y
:
df2 = df.sort(["x", "y"])
x y
0 0 0
3 0 1
6 0 2
1 1 0
4 1 1
7 1 2
2 2 0
5 2 1
8 2 2
인덱스가 다시 오름차순이 되도록 변경하려면 어떻게 해야 합니다.예를 들어, 어떻게 하면 얻을 수 있습니까?
x y
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
저는 다음을 시도해 보았습니다.안타깝게도 인덱스는 전혀 변경되지 않습니다.
df2.reindex(np.arange(len(df2.index)))
0, 1, 2, ..., n-1의 기본 인덱스를 가져오는 데 사용하여 인덱스를 재설정할 수 있습니다(및 사용).drop=True
데이터 프레임에 추가 열로 추가하는 대신 기존 인덱스를 삭제할 것임을 나타냅니다.)
In [19]: df2 = df2.reset_index(drop=True)
In [20]: df2
Out[20]:
x y
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
판다 1.0.0에 새 매개 변수가 있기 때문입니다.ignore_index
필요한 것을 정확히 수행합니다.
In [1]: df2 = df.sort_values(by=['x','y'],ignore_index=True)
In [2]: df2
Out[2]:
x y
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
df.sort()
사용되지 않음, 사용df.sort_values(...)
: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html
그런 다음 조리스의 대답을 따르세요.df.reset_index(drop=True)
다음과 같은 효과가 있습니다!
기존 데이터 프레임 자체를 변경하려면 직접 사용할 수 있습니다.
df.sort_values(by=['col1'], inplace=True) df.reset_index(drop=True, inplace=True) df >> col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 5 C 4 3 F 4 D 7 2 e 3 NaN 8 4 D
그렇지 않으면 기존 데이터 프레임을 변경하지 않고 정렬된 데이터 프레임을 다른 변수에 별도로 저장하려는 경우 다음을 사용할 수 있습니다.
df_sorted = df.sort_values(by=['col1']).reset_index(drop=True) df_sorted >> col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 3 C 4 3 F 4 D 7 2 e 5 NaN 8 4 D df >> col1 col2 col3 col4 0 A 2 0 a 1 A 1 1 B 2 B 9 9 c 3 NaN 8 4 D 4 D 7 2 e 5 C 4 3 F
다음을 사용하여 새 인덱스를 설정할 수 있습니다.
df2.set_index(np.arange(len(df2.index)))
출력:
x y
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
언급URL : https://stackoverflow.com/questions/33165734/update-index-after-sorting-data-frame
반응형
'sourcecode' 카테고리의 다른 글
RxJS 관찰 가능한 필터에서 정의되지 않음 (0) | 2023.06.13 |
---|---|
스토리보드 - AppDelegate의 ViewController 참조 (0) | 2023.06.13 |
클라우드 기능을 로컬로 실행하면 "functions.config() is not available" 오류가 나타남 (0) | 2023.06.13 |
배열의 마지막 요소를 삭제하지 않고 가져오는 방법은 무엇입니까? (0) | 2023.06.13 |
Oracle sqlldr TRADING NULLCOLS가 필요한데 그 이유는 무엇입니까? (0) | 2023.06.13 |