使用Pandas DataFrame.sort()时,我可以让它实际重新编号行吗?

Owe*_*wen 11 python pandas

我总是对此感到惊讶:

> data = DataFrame({'x':[1, 2], 'y':[2, 1]})
> data = data.sort('y')
> data
   x  y
1  2  1
0  1  2

> data['x'][0]
1
Run Code Online (Sandbox Code Playgroud)

有没有办法可以重新分配索引以适应新的排序?

DSM*_*DSM 22

就我而言,我很高兴排序不会丢失索引信息.如果确实如此,那么首先要有一个索引就没有多大意义了,而不是另一个专栏.

如果要将索引重置为某个范围,您可以:

>>> data
   x  y
1  2  1
0  1  2
>>> data.reset_index(drop=True)
   x  y
0  2  1
1  1  2
Run Code Online (Sandbox Code Playgroud)

您可以根据需要重新分配或使用的地方inplace=True.如果真正的问题是你想通过独立于索引的位置访问,你可以使用iloc:

>>> data['x']
1    2
0    1
Name: x, dtype: int64
>>> data['x'][0]
1
>>> data['x'].iloc[0]
2
Run Code Online (Sandbox Code Playgroud)