Обновить индекс после сортировки данных
Возьмите следующий кадр данных:
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)))
Ответы
Ответ 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