Com*_*low 43 python dataframe cumulative-sum pandas
我DataFrame喜欢这样的:
df:
fruit val1 val2
0 orange 15 3
1 apple 10 13
2 mango 5 5
Run Code Online (Sandbox Code Playgroud)
我如何让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
Run Code Online (Sandbox Code Playgroud)
我试过了df.cumsum(),但它给了我这个错误:
TypeError:输入类型不支持ufunc'isnan',根据强制转换规则''safe',输入无法安全地强制转换为任何支持的类型
Bre*_*arn 86
df['cum_sum'] = df['val1'].cumsum()
df['cum_perc'] = 100*df['cum_sum']/df['val1'].sum()
Run Code Online (Sandbox Code Playgroud)
这将添加列df.如果需要副本,df请先复制,然后在副本上执行这些操作.
小智 5
这是一个很好的答案,但写于 2014 年。我只是稍微修改了一下,所以它可以通过编译器,结果看起来与示例类似。
df['cum_sum'] = df["val1"].cumsum()
df['cum_perc'] = round(100*df.cum_sum/df["val1"].sum(),2)
Run Code Online (Sandbox Code Playgroud)