2015-10-16 9 views
27

は、次のデータフレームを取るデータフレームをソートした後:更新インデックス

x = np.tile(np.arange(3),3) 
y = np.repeat(np.arange(3),3) 
df = pd.DataFrame({"x": x, "y": y}) 
x y 
0 0 0 
1 1 0 
2 2 0 
3 0 1 
4 1 1 
5 2 1 
6 0 2 
7 1 2 
8 2 2 

私はyによってのみ二x最初、およびによってそれをソートする必要があります。

df2 = df.sort(["x", "y"])
x y 
0 0 0 
3 0 1 
6 0 2 
1 1 0 
4 1 1 
7 1 2 
2 2 0 
5 2 1 
8 2 2 

インデックスを再度昇順に変更するにはどうすればよいですか。私。どうすればいいですか?

x y 
0 0 0 
1 0 1 
2 0 2 
3 1 0 
4 1 1 
5 1 2 
6 2 0 
7 2 1 
8 2 2 

私は以下を試しました。残念ながら、それは、すべてのインデックスを変更しません:

df2.reindex(np.arange(len(df2.index))) 

答えて

38

あなたは1、2のデフォルトのインデックスを取り戻すためにreset_indexを使用してインデックスをリセットすることができ、...、nは(と示すためにdrop=Trueを使用しますあなたの代わりに)あなたのデータフレームに列として追加の既存のインデックスをドロップしたい:

In [19]: df2 = df2.reset_index(drop=True) 

In [20]: df2 
Out[20]: 
    x y 
0 0 0 
1 0 1 
2 0 2 
3 1 0 
4 1 1 
5 1 2 
6 2 0 
7 2 1 
8 2 2 
3

あなたはset_indexを使用して、新しいインデックスを設定することができます。

df2.set_index(np.arange(len(df2.index))) 

出力:

x y 
0 0 0 
1 0 1 
2 0 2 
3 1 0 
4 1 1 
5 1 2 
6 2 0 
7 2 1 
8 2 2 
+3

これは不要であるが、使用 'reset_index()'の代わりに – smci

関連する問題