2013-03-21 7 views
21

私はデータフレームを持っています。次に、いくつかの行を削除して別のデータフレームを作成する論理的な条件があります。ただし、新しいデータフレームでは、削除された行のインデックスはスキップされます。スキップすることなく順番にインデックスを再作成するにはどうすればよいですか?データフレームを再インデックスする

0 
0 0 
1 1 
3 3 
4 4 

が、私はそれが次のようになりたい::

0 
0 0 
1 1 
2 3 
3 4 

おかげでここ

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 

うち明確にするためにコード化されたサンプルです。

答えて

36

一つの方法は、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

私が探しています正確に何であること、ありがとうございます。 – user2133151

+7

あなたは 'inplace = True'を指定する必要もあると信じています。さもなければ' df_no_2'は影響を受けず、代わりに新しいデータフレームが作成されます: 'df_no_2.reset_index(drop = True、inplace = True)'(pandas v0。 15.2) – silentser

+1

通常、ほとんどのパンダの操作と同じように、結果に何か(例: 'df_no_2 = df_no_2.reset_index(drop = True)')を割り当てるだけです。 – DSM

関連する問題