code

데이터 프레임 정렬 후 인덱스 업데이트

codestyles 2020. 11. 8. 10:01
반응형

데이터 프레임 정렬 후 인덱스 업데이트


다음 데이터 프레임을 사용하십시오.

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)))

사용하여 인덱스를 재설정 하여 reset_index0, 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

df.sort()더 이상 사용되지 않습니다 df.sort_values(...). https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html을 사용합니다 .

그런 다음 수행하여 joris의 대답을 따르십시오. df.reset_index(drop=True)


다음을 사용하여 새 인덱스를 설정할 수 있습니다 set_index.

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

반응형