2016-08-02 31 views
2

In Pandas ist es möglich, die Zeilennummer für eine Funktion zu referenzieren. Ich spreche nicht von .iloc.Funktion, die von der Zeilennummer abhängt

Iloc nimmt eine Position, d.h. eine Zeilennummer, und gibt einen Datenrahmenwert zurück.

Ich möchte auf die Positionsnummer im Dataframe zugreifen.

Zum Beispiel, wenn die Funktion in der Zelle ist, die 3 Zeilen nach unten und 2 Spalten quer ist, möchte ich einen Weg, um die Ganzzahl zurückgeben 3. Nicht der Eintrag, der an dieser Stelle ist.

Danke.

+0

Können Sie ein Beispiel mit einem tatsächlichen DataFrame geben? –

+0

Könnte das nützlich sein? http://stackoverflow.com/questions/18199288/getting-the-integer-index-of-a-pandas-dataframe-row-fulfilling-a-condition –

+1

Ich denke, du brauchst ['get_loc'] (http: // pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.get_loc.html) – jezrael

Antwort

1

Betrachten Sie die Datenrahmen df

df = pd.DataFrame([[1, 2], [3, 4]], ['a', 'b'], ['c', 'd']) 

df 

enter image description here

und die Reihe row

row = df.ix['a'] 

row 

c 1 
d 2 
Name: a, dtype: int64 

Es gibt nichts über diese Zeile, dass es von df war die erste Reihe zeigt. Diese Information ist im Wesentlichen verloren ... irgendwie.

Sie können @ jezrael Rat nehmen und get_loc

df.index.get_loc(row.name) 

0 

Das funktioniert aber nur verwenden, wenn Ihr Index eindeutig ist.

Ihre einzige andere Möglichkeit ist es, ihre Position zu verfolgen, wenn Sie sie bekommen. Der beste Weg, dies zu tun ist:

Verwenden enumerate auf df.iterrows()

for i, (idx, row) in enumerate(df.iterrows()): 
    print "row position: {:>3d}\nindex value: {:>4s}".format(i, idx) 
    print row, '\n' 

row position: 0 
index value: a 
c 1 
d 2 
Name: a, dtype: int64 

row position: 1 
index value: b 
c 3 
d 4 
Name: b, dtype: int64 
0

Leider konnte ich nicht ein Code-Beispiel aber ich bin auf meinem Telefon hinzufügen. piRSquared bestätigte meine Ängste, als er sagte, dass die Informationen verloren gegangen seien. Ich schätze, ich muss immer eine Schleife machen oder eine Spalte mit Zahlen hinzufügen (das wird verschlüsselt, wenn ich sie sortiere: /).

Danke an alle.