2015-10-16 26 views
27

Aşağıdaki veri çerçevesi al veri çerçevesini sıraladıktan sonra:Güncelleme endeksi

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 

Ben y tarafından sadece ikinci x ilk ve bunu sıralamak gerekir:

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 

Dizini, yeniden yükselmeye devam edecek şekilde nasıl değiştirebilirim. Yani Bunu nasıl elde ederim:

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 

Aşağıdakileri denedim. Ne yazık ki, hiç endeksi değişmez:

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

cevap

38

Sen 1, 2 varsayılan bir indeksini geri almak için reset_index kullanılarak endeksi sıfırlayabilirsiniz, ..., n (ve göstermek için drop=True kullanmak yerine) sizin dataframe bir sütun olarak eklemeden mevcut dizini bırakın istiyorum:

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

sen set_index kullanarak yeni endeks ayarlayabilirsiniz:

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

Çıkış:

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

Bu gereksizdir, kullanımı 'reset_index() 'yerine – smci