2013-03-21 22 views
21

Tôi có một khung dữ liệu. Sau đó, tôi có một điều kiện hợp lý bằng cách sử dụng mà tôi tạo ra một khung dữ liệu bằng cách loại bỏ một số hàng. Tuy nhiên, khung dữ liệu mới bỏ qua các chỉ mục cho các hàng đã xóa. Làm thế nào tôi có thể làm cho nó reindex tuần tự mà không bỏ qua? Đây là một mẫu mã để làm rõDataframes Reindexing

import pandas as pd 
import numpy as np 

jjarray = np.array(range(5)) 
eq2 = jjarray == 2 
neq2 = np.logical_not(eq2) 

jjdf = pd.DataFrame(jjarray) 
jjdfno2 = jjdf[neq2] 

jjdfno2 

Out:

0 
0 0 
1 1 
3 3 
4 4 

Tôi muốn nó trông như thế này:

0 
0 0 
1 1 
2 3 
3 4 

Cảm ơn.

Trả lời

36

Một cách là sử dụng reset_index:

>>> df = pd.DataFrame(range(5)) 
>>> eq2 = df[0] == 2 
>>> df_no_2 = df[~eq2] 
>>> df_no_2 
    0 
0 0 
1 1 
3 3 
4 4 
>>> df_no_2.reset_index(drop=True) 
    0 
0 0 
1 1 
2 3 
3 4 
+0

Cảm ơn bạn đó là chính xác những gì tôi đang tìm kiếm. – user2133151

+7

Tôi tin rằng bạn cũng cần phải xác định 'inplace = True', nếu không' df_no_2' sẽ không bị ảnh hưởng và một khung dữ liệu mới sẽ được tạo: 'df_no_2.reset_index (drop = True, inplace = True)' (pandas v0. 15.2) – silentser

+1

Thông thường bạn chỉ cần gán kết quả cho một thứ gì đó (ví dụ: 'df_no_2 = df_no_2.reset_index (drop = True)'), giống như bạn làm cho hầu hết các thao tác gấu trúc. – DSM

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