Somme Cumulative et pourcentage sur colonne?

j'ai un DataFrame comme ceci:

df:

 fruit    val1 val2
0 orange    15    3
1 apple     10   13
2 mango     5    5 

Comment puis-je obtenir Pandas pour me donner une somme cumulative et Colonne de pourcentage sur seulement <!--4?

sortie Désirée:

df_with_cumsum:

 fruit    val1 val2   cum_sum    cum_perc
0 orange    15    3    15          50.00
1 apple     10   13    25          83.33
2 mango     5    5     30          100.00

j'ai essayé df.cumsum(), mais ça me donne cette erreur:

TypeError: ufunc 'isnan' n'est pas supporté pour les types input, et les inputs ne peuvent pas être forcés en toute sécurité à n'importe quel type supporté selon le casting règle "sûr"

34
demandé sur Brian Tompsett - 汤莱恩 2014-01-07 10:11:04

2 réponses

df['cum_sum'] = df.val1.cumsum()
df['cum_perc'] = 100*df.cum_sum/df.val1.sum()

ceci ajoutera les colonnes à df. Si vous voulez une copie, copie df d'abord, puis faites ces opérations sur la copie.

68
répondu BrenBarn 2014-01-07 06:15:34

C'est une bonne réponse, mais écrire en 2014. J'ai juste modifié un peu, alors il peut passer le compilateur et semble même l'exemple.

df['cum_sum'] = df["val1"].cumsum() df['cum_perc'] = rount(100*df.cum_sum/df["val1"].sum(),2)

1
répondu Gene 2018-09-19 21:28:15