Ich versuche, auf den Index einer Zeile in einer Funktion zuzugreifen, die DataFramein Pandas auf eine gesamte Funktion angewendet wird . Ich habe so etwas:
df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
und ich werde eine Funktion definieren, die auf Elemente mit einer bestimmten Zeile zugreift
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Ich kann es so anwenden:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Genial! Was ist nun, wenn ich den Index in meine Funktion integrieren möchte? Der Index einer bestimmten Zeile in dieser Zeile DataFramevor dem Hinzufügen dwäre Index([u'a', u'b', u'c', u'd'], dtype='object'), aber ich möchte die 0 und 1. Ich kann also nicht einfach darauf zugreifen row.index.
Ich weiß, dass ich eine temporäre Spalte in der Tabelle erstellen könnte, in der ich den Index speichere, aber ich frage mich, ob er irgendwo im Zeilenobjekt gespeichert ist.
apply? Es ist viel langsamer als vektorisierte Operationen am Frame selbst durchzuführen. (Manchmal gelten ist die einfachste Möglichkeit , etwas zu tun, und Leistungsinformationen werden oft übertrieben, aber für Ihr spezielles Beispiel ist es so einfach nicht , es zu benutzen.)