Python 列上的累计总和和百分比?
我有一个Python 列上的累计总和和百分比?,python,pandas,dataframe,cumulative-sum,Python,Pandas,Dataframe,Cumulative Sum,我有一个数据帧,如下所示: df: fruit val1 val2 0 orange 15 3 1 apple 10 13 2 mango 5 5 如何让Pandas仅在val1上为我提供累计总和和百分比列 期望输出: df_和_cumsum: fruit val1 val2 cum_sum cum_perc 0 orange 15 3 15 50.00 1 apple 10 13
数据帧
,如下所示:
df
:
fruit val1 val2
0 orange 15 3
1 apple 10 13
2 mango 5 5
如何让Pandas仅在val1
上为我提供累计总和和百分比列
期望输出:
df_和_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”,并且无法根据强制转换规则“安全”将输入安全强制为任何支持的类型
这将把列添加到
df
。如果您想要一份副本,请先复制df
,然后在副本上执行这些操作。这是一个很好的答案,但写于2014年。
我只是修改了一点,这样它就可以通过编译器,结果看起来与示例类似
df['cum_sum'] = df["val1"].cumsum()
df['cum_perc'] = round(100*df.cum_sum/df["val1"].sum(),2)
TypeError:第二行的*:'int'和'instancemethod'的操作数类型不受支持。
是否键入了cumsum
或cum\u sum
?可能也有用的内容:pd.options.display.float\u format='{.2f}%'
df['cum_sum'] = df["val1"].cumsum()
df['cum_perc'] = round(100*df.cum_sum/df["val1"].sum(),2)