次のような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 ''に従って、サポートされているタイプに入力を安全に強制変換できませんでした
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)