Подтвердить что ты не робот

Обновить индекс после сортировки данных

Возьмите следующий кадр данных:

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

Ответ 1

Вы можете reset использовать индекс reset_index, чтобы вернуть индекс по умолчанию 1, 2,..., n ( и используйте 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

Ответ 2

Вы можете установить новые индексы, используя 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