J'essaie d'accéder à l'index d'une ligne dans une fonction appliquée sur tout un DataFrame
dans Pandas. J'ai quelque chose comme ça:
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
et je définirai une fonction qui accède aux éléments avec une ligne donnée
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Je peux l'appliquer comme ceci:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Impressionnant! Maintenant, que faire si je veux incorporer l'index dans ma fonction? L'index de n'importe quelle ligne donnée dans ceci DataFrame
avant l'ajout d
seraitIndex([u'a', u'b', u'c', u'd'], dtype='object')
, mais je veux le 0 et 1. Donc je ne peux pas simplement accéder row.index
.
Je sais que je pourrais créer une colonne temporaire dans la table où je stocke l'index, mais je me demande si elle est stockée quelque part dans l'objet de ligne.
apply
? C'est beaucoup plus lent que d'effectuer des opérations vectorisées sur l'image elle-même. (Parfois, appliquer est le moyen le plus simple de faire quelque chose, et les considérations de performances sont souvent exagérées, mais pour votre exemple particulier, il est aussi facile de ne pas l'utiliser.)