Estoy tratando de acceder al índice de una fila en una función aplicada en todo un DataFramePandas. Tengo algo como esto:
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
y definiré una función que acceda a elementos con una fila determinada
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Puedo aplicarlo así:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
¡Increíble! Ahora, ¿qué pasa si quiero incorporar el índice en mi función? El índice de cualquier fila dada en esto DataFrameantes de agregar dsería Index([u'a', u'b', u'c', u'd'], dtype='object'), pero quiero el 0 y el 1. Así que no puedo acceder row.index.
Sé que podría crear una columna temporal en la tabla donde almaceno el índice, pero me pregunto si está almacenado en el objeto de fila en algún lugar.
apply? Es mucho más lento que realizar operaciones vectorizadas en el propio marco. (A veces, aplicar es la forma más sencilla de hacer algo, y las consideraciones de rendimiento a menudo se exageran, pero para su ejemplo particular es tan fácil no usarlo)