J'essaie de générer une nouvelle colonne dans une base de données qui est égale à l'index des lignes actuelles moins l'index de la ligne sélectionnée à l'origine par un utilisateur. Disons que nous avons ce dataframe:Pandas dataframe appliquer une fonction pour créer une nouvelle colonne basée sur la ligne sélectionnée
A B C
0 foo bar
1 bar foo
2 foo bar
et notre utilisateur a sélectionné la ligne 1. Je veux que les valeurs de la colonne C pour être ceci:
A B C
0 foo bar -1
1 bar foo 0
2 foo bar 1
Je sais déjà ce genre de peut être mis en œuvre par itérer à travers la trame de données en utilisant quelque chose comme ceci:
for index,row in df.iterrows():
df['C'].loc[index] = index - USER_SELECTED_INDEX
mais c'est très lent. Si lent en fait que ça ne marche pas.
Ma question est, comment puis-je utiliser df.apply pour accélérer les choses? Et comment puis-je passer l'index de la ligne actuelle à ma fonction qui est appliquée? Je veux faire quelque chose comme:
def applyCol(index):
df['C'].loc[index] = index - USER_SELECTED_INDEX
df['C'] = df.apply(applyCol, axis=1)