2013-07-13 39 views
11

Tôi luôn ngạc nhiên bởi điều này:Khi sử dụng Pandas DataFrame.sort(), tôi có thể làm cho nó thực sự lặp lại các hàng không?

> 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 

Có cách nào tôi có thể gây ra các chỉ số để được bố trí để phù hợp với trật tự mới?

+0

này sẽ không có ý nghĩa nếu các chỉ số là timestamps ví dụ. Bạn có thể gán lại thuộc tính chỉ mục nếu cần. –

Trả lời

22

Về phần tôi, tôi vui vì sắp xếp đó không loại bỏ thông tin chỉ mục. Nếu nó đã làm, sẽ không có nhiều điểm để có một chỉ số ở nơi đầu tiên, như trái ngược với một cột khác.

Nếu bạn muốn đặt lại chỉ mục cho một phạm vi, bạn có thể:

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

Nơi bạn có thể phân công lại hoặc sử dụng inplace=True như bạn thích. Nếu thay vào đó là vấn đề thực sự là bạn muốn truy cập vào vị trí độc lập chỉ mục, bạn có thể sử dụng iloc:

>>> data['x'] 
1 2 
0 1 
Name: x, dtype: int64 
>>> data['x'][0] 
1 
>>> data['x'].iloc[0] 
2 
+0

Hoàn hảo; cảm ơn bạn! – Owen

Các vấn đề liên quan