列的累计和百分比?

我的 DataFrame是这样的:

返回文章页面

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

我如何让熊猫给我一个累积金额和百分比栏目只有 val1

预期输出:

返回文章页面

 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”,输入不能被安全地强制转换为任何支持的类型

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

这将把列添加到 df。如果您想要一个副本,首先复制 df,然后对该副本执行以下操作。

这是一个很好的答案,但写于2014年。 我只是稍微修改了一下,这样它就可以通过编译器并且结果看起来与示例相似。

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

上面的答案是好的,但是已经过时了。我已经更新了它,以便它能正常工作。

Df [‘ um _ sum’] = df [‘ val1’] . Cumsum ()

Df [‘附加值 _ perc’] = round (((df.cy _ sum/df [‘ val1’] . sum ()) * 100,2)