2016-05-26 13 views
0

Ich habe diese Pandas Dataframe bekam:Pandas Datenrahmen iterieren Zeilen und Summe

recipe_name ingredient_group  weight% 
pudding  milk      0.60 
pudding 2  sugar     0.10 
pudding 2  sugar     0.70 
pudding 2  milk      0.30 
pudding 3  egg      0.20 

Ich würde eine Pandas Datenrahmen wie folgt erhalten:

recipe_name ingredient_group  weight%  new_column 
pudding  milk      0.60  0.60 
pudding 2  sugar     0.10  0.80 (0.1+0.7) 
pudding 2  sugar     0.70  0.80 (0.1+0.7) 
pudding 2  milk      0.30  0.30 
pudding 3  egg      0.20  0.20 

Das Problem ist, dass es Rezepte sind, die die Verwendung gleiche Zutat mehrmals (zum Beispiel verwendet Pudding 2 2 mal Zucker).

Ich möchte eine zusätzliche Spalte mit dem Gewicht% und dann mit der Summe einer Zutat erstellen, die zweimal verwendet wurde (siehe Beispiel oben).

Ich habe versucht, eine for-Schleife für dieses Problem zu machen, aber ich war nicht erfolgreich. Irgendjemand eine Idee?

+0

Können Sie Ihre Gruppierungskriterien erklären – EdChum

+0

Bitte bearbeiten in Ihre Frage nicht als Kommentar – EdChum

+0

Ist es klar, wie diese? – Papie

Antwort

4

Verwenden groupby mit transformsum:

df['accumulated weight'] = df.groupby(['name','group'])['weight'].transform(sum) 
print (df) 
    name  group weight accumulated weight 
0 Appie elephant  60     60 
1 Henry  tiger  50     120 
2 Henry  tiger  70     120 
3 Laura  cow  30     30 
4 Laura  tiger  20     20 
+0

Vielen Dank jezrael! Du hast mir dabei sehr geholfen! – Papie

Verwandte Themen