Ответ 1
Вместо переиндексации просто измените фактический индекс:
dfm.index = range(1,len(dfm) + 1)
Тогда это не изменит порядок, просто индекс
У меня возникли проблемы с сортировкой, а затем сброс индекса в Pandas:
dfm = dfm.sort(['delt'],ascending=False)
dfm = dfm.reindex(index=range(1,len(dfm)))
Dataframe возвращает unsorted после переиндексации. Моя конечная цель состоит в том, чтобы иметь отсортированный dataframe с номерами индексов от 1 → len (dfm), поэтому, если есть лучший способ сделать это, я бы не возражал,
Спасибо!
Вместо переиндексации просто измените фактический индекс:
dfm.index = range(1,len(dfm) + 1)
Тогда это не изменит порядок, просто индекс
Я думаю, вы не понимаете, что делает reindex
. Он использует переданный индекс для выбора значений вдоль пройденной оси, а затем заполняет NaN
, где ваш прошедший индекс не совпадает с текущим индексом. Что вам интересно, просто установите индекс на что-то еще:
In [12]: df = DataFrame(randn(10, 2), columns=['a', 'delt'])
In [13]: df
Out[13]:
a delt
0 0.222 -0.964
1 0.038 -0.367
2 0.293 1.349
3 0.604 -0.855
4 -0.455 -0.594
5 0.795 0.013
6 -0.080 -0.235
7 0.671 1.405
8 0.436 0.415
9 0.840 1.174
In [14]: df.reindex(index=arange(1, len(df) + 1))
Out[14]:
a delt
1 0.038 -0.367
2 0.293 1.349
3 0.604 -0.855
4 -0.455 -0.594
5 0.795 0.013
6 -0.080 -0.235
7 0.671 1.405
8 0.436 0.415
9 0.840 1.174
10 NaN NaN
In [16]: df.index = arange(1, len(df) + 1)
In [17]: df
Out[17]:
a delt
1 0.222 -0.964
2 0.038 -0.367
3 0.293 1.349
4 0.604 -0.855
5 -0.455 -0.594
6 0.795 0.013
7 -0.080 -0.235
8 0.671 1.405
9 0.436 0.415
10 0.840 1.174
Помните, что если вы хотите, чтобы len(df)
находился в индексе, вам нужно добавить 1 к конечной точке, поскольку Python не включает конечные точки при построении диапазонов.