Estoy tratando de acceder al índice de una fila en una función aplicada en todo un DataFrame
Pandas. 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 DataFrame
antes de agregar d
serí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)