Cumulative sum and percentage on column?

cumulative-sum, dataframe, pandas, python

Solution

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

This will add the columns to `df`. If you want a copy, copy `df` first and then do these operations on the copy.

Problem

I have a `DataFrame` like this: `df`: ``` fruit val1 val2 0 orange 15 3 1 apple 10 13 2 mango 5 5 ``` How do I get Pandas to give me a cumulative sum and percentage column on only `val1`? Desired output: `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 ``` I tried `df.cumsum()`, but it's giving me this error: TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Original source