2015-01-02 27 views
9

Tôi không chắc chắn nơi tôi đang lạc lối nhưng tôi dường như không thể đặt lại chỉ mục trên một khung dữ liệu.Chỉ mục đặt lại Pandas dường như không hoạt động?

Khi tôi chạy test.head(), tôi nhận được đầu ra dưới đây:

test.head

Như bạn có thể thấy, dataframe là một lát, vì vậy chỉ số này nằm ngoài giới hạn. Điều tôi muốn làm là đặt lại chỉ mục cho khung dữ liệu này. Vì vậy, tôi chạy test.reset_index(drop=True). Đây quả đầu ra như sau:

reset

Trông giống như một chỉ số mới, nhưng nó không phải. Chạy lại test.head, chỉ mục vẫn giữ nguyên. Cố gắng sử dụng lambda.apply hoặc iterrows() tạo sự cố với khung dữ liệu.

Làm cách nào để tôi có thể đặt lại chỉ mục?

+0

Tôi rất tiếc nhưng những bảng đó là ... những hình ảnh khổng lồ như vậy ... @ _ @ Tôi đã nứt lên. – kuanb

+1

@kuanb Bạn sẽ rất vui khi biết các bảng được định dạng lại trong sổ ghi chép Jupyter 5 :) –

Trả lời

7

Câu trả lời của BrenBarn hoạt động.

Sau đây cũng đã làm việc qua this thread, mà không phải là một xử lý sự cố quá nhiều như một khớp làm thế nào để thiết lập lại các chỉ số:

test = test.reset_index() 
del test['index'] 
+1

Làm việc như một sự quyến rũ! – Subspacian

26

reset_index theo mặc định không sửa đổi DataFrame; nó trả về một mới DataFrame với chỉ mục đặt lại. Nếu bạn muốn sửa đổi bản gốc, hãy sử dụng đối số inplace: df.reset_index(drop=True, inplace=True). Ngoài ra, hãy chỉ định kết quả của reset_index bằng cách thực hiện df = df.reset_index(drop=True).

1

tôi sẽ thêm vào trong câu trả lời đang veritas của:

Nếu bạn đã có một cột chỉ mục được chỉ định, sau đó bạn có thể lưu del, tất nhiên. Trong ví dụ giả định của tôi:

df_total_sales_customers = pd.DataFrame({'Sales': total_sales_customers['Sales'], 
           'Customers': total_sales_customers['Customers']}, index = total_sales_customers.index) 

    df_total_sales_customers = df_total_sales_customers.reset_index() 
Các vấn đề liên quan