あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

PandasでWindow関数(累積系:runsum/cumsum)を再現したい(cum*を使う)

SQLの分析でよく使うウィンドウ関数、その中の累系の再現です。

sum(col) over(order by sort_col rows between unbounded preceding and current row

みたいなやつです。
sort_colで並べて、そのカラムまでの累積を上では出しています。

Pandasの場合

df.col.cumsum()

で行けますが、その前にソートしておく必要があります。
また、sqlignore nullsの代わりとしてskipna = Trueを渡すことで、nullを飛ばせます。

類似のもの

  • cummax
  • cummin
  • cumprod が存在するようです。

partitionで区切る場合

一度groupbyする感じですね。

df.groupby('group カラム').col.cumsum()