2013-07-13 1 views
11

Ich bin immer wieder davon überrascht:Kann ich bei der Verwendung von Pandas DataFrame.sort() die Zeilen tatsächlich neu nummerieren?

> data = DataFrame({'x':[1, 2], 'y':[2, 1]}) 
> data = data.sort('y') 
> data 
    x y 
1 2 1 
0 1 2 

> data['x'][0] 
1 

Gibt es eine Weise, die ich die Indizes die neue Ordnung passen neu zugewiesen werden verursachen können?

+0

Dies wäre nicht sinnvoll, wenn die Indizes Zeitstempel zum Beispiel sind. Sie können die Indexeigenschaft bei Bedarf neu zuweisen. –

Antwort

22

Ich für meinen Teil bin ich froh, dass Sortierung die Indexinformationen nicht wegwirft. Wenn es so wäre, würde es keinen Sinn machen, überhaupt einen Index zu haben, im Gegensatz zu einer anderen Spalte.

Wenn Sie den Index auf einen Bereich zurücksetzen möchten, können Sie:

>>> data 
    x y 
1 2 1 
0 1 2 
>>> data.reset_index(drop=True) 
    x y 
0 2 1 
1 1 2 

Wo Sie oder inplace=True verwenden zuweisen konnte wie man wollte. Wenn stattdessen das eigentliche Problem ist, dass Sie durch die Position unabhängig von Index zugreifen möchten, können Sie iloc verwenden:

>>> data['x'] 
1 2 
0 1 
Name: x, dtype: int64 
>>> data['x'][0] 
1 
>>> data['x'].iloc[0] 
2 
+0

Perfekt; Danke! – Owen

Verwandte Themen