11

我总是对此感到惊讶:

> 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

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

4

1 回答 1

23

就我而言,我很高兴排序不会丢弃索引信息。如果确实如此,那么与另一列相反,首先要有一个索引就没有多大意义了。

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

>>> data
   x  y
1  2  1
0  1  2
>>> data.reset_index(drop=True)
   x  y
0  2  1
1  1  2

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

>>> data['x']
1    2
0    1
Name: x, dtype: int64
>>> data['x'][0]
1
>>> data['x'].iloc[0]
2
于 2013-07-13T16:03:16.120 回答