Sto cercando di accedere all'indice di una riga in una funzione applicata a un intero DataFramein Panda. Ho qualcosa del genere:
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
e definirò una funzione che accede agli elementi con una data riga
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Posso applicarlo in questo modo:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Eccezionale! E se volessi incorporare l'indice nella mia funzione? L'indice di una determinata riga in questo DataFrameprima di aggiungere dsarebbe Index([u'a', u'b', u'c', u'd'], dtype='object'), ma voglio lo 0 e 1. Quindi non posso semplicemente accedere row.index.
So che potrei creare una colonna temporanea nella tabella in cui memorizzo l'indice, ma mi chiedo se è memorizzato da qualche parte nell'oggetto riga.
apply? È molto più lento che eseguire operazioni vettorializzate sul frame stesso. (A volte applicare è il modo più semplice per fare qualcosa e le considerazioni sulle prestazioni sono spesso esagerate, ma per il tuo esempio particolare è altrettanto facile non usarlo.)