Подтвердить что ты не робот

Совокупная сумма и процент по столбцу?

У меня есть DataFrame:

df:

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

Как мне получить Pandas, чтобы дать мне кумулятивную сумму и процентный столбец только val1?

Требуемый вывод:

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

Я пробовал df.cumsum(), но он дал мне эту ошибку:

TypeError: ufunc 'isnan' не поддерживается для типов ввода, и входы не могут быть безопасно привязаны к любым поддерживаемым типам в соответствии с правилом литья '' safe ''

4b9b3361

Ответ 1

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

Это добавит столбцы в df. Если вам нужна копия, сначала скопируйте df а затем выполните эти операции с копией.

Ответ 2

Это хороший ответ, но написано в 2014 году. Я просто немного изменил, чтобы он мог передать компилятор, и результаты выглядят аналогично примеру.

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