2016-06-22 17 views
0

Zum Beispiel gibt es ein pandax.DataFrame wie folgt aus:Gibt es eine Möglichkeit, den Wert von Spalten von nicht fortlaufenden Nummern in 1-gestartete fortlaufende Nummern zu konvertieren?

  col_1  col_2 
idx_1  493  47 
idx_2  229  46435 
idx_3  998  56 
idx_4  209  45 
idx_3  998  56 

und ich möchte eine leicht zu finden, wie Sie es, immer in jeder Spalte sehen kann

  col_1  col_2 
idx_1  3   2 
idx_2  2   4 
idx_3  4   3 
idx_4  1   1 
idx_3  4   3 

zu konvertieren konvertieren kleinster Wert zu 1, dann zweit kleinster zu 2, so weiter und so viert, jeder einfache Weg, um das zu erreichen?

Antwort

0

Sie rank verwenden können:

df.rank(method="dense") 
Out[8]: 
     col_1 col_2 
idx_1 3.0 2.0 
idx_2 2.0 4.0 
idx_3 4.0 3.0 
idx_4 1.0 1.0 
idx_3 4.0 3.0 

Da die ursprünglichen Werte vom Typ float sind, sind die Reihen auch schwimmt. Sie können astype(int) anrufen, wenn Sie möchten:

df.rank(method="dense").astype(int) 
Out[9]: 
     col_1 col_2 
idx_1  3  2 
idx_2  2  4 
idx_3  4  3 
idx_4  1  1 
idx_3  4  3 
Verwandte Themen