Prenons cet exemple
df = pd.DataFrame({'group' : ['a','a','a','b','b'],
'value' : [1,2,3,10,20]})
Out[39]:
group value
0 a 1
1 a 2
2 a 3
3 b 10
4 b 20
Essentiellement, je voudrais grouper par group
et pouvoir appeler un function
qui utilise la valeur du groupe actuel ( a
ou b
dans cet exemple) comme argument. Autrement dit, ma fonction prend comme entrée le courant value
et son correspondant group
.
Quelque chose comme
def myfunc(mygroup, myvalue):
return myvalue.astype(str) + mygroup
df.groupby('group').value.apply(lambda x: myfunc(mygroup,x))
Ce qui ne marche pas. Le résultat attendu est:
Out[38]:
0 1a
1 2a
2 3a
3 10b
4 20b
Des idées? Merci!
Vous pouvez essayer de regrouper le dataframe et d'ajouter les colonnes spécifiques dans la fonction groupby
df.groupby(['group']).apply(lambda x: x['value'].astype(str) + x['group'])
En dehors:
group
a 0 1a
1 2a
2 3a
b 3 10b
4 20b
dtype: object
ou
vous pouvez également essayer de boucler les groupes individuellement et d'ajouter le groupe à la valeur
pd.concat([g['value'].astype(str)+i for i,g in df.groupby(['group'])])
En dehors:
0 1a
1 2a
2 3a
3 10b
4 20b
Name: value, dtype: object
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots