pandasでDataFrameで差分をとる
以下のようなDataframeを考えよう。
df = pd.DataFrame([{"a" : 1,"b" : 2 , "c" : 3 },{"a" : 2 , "b" : 3, "c" : 5},{"a" : 1 , "b" : 9, "c" : 5} ] ,index=['1','2','3']) # df a b c 1 1 2 3 2 2 3 5 3 1 9 5
このとき、a列の値ごとに差分をとりたい場合を考える。すでにindexされてる行で区別して差分をとることは簡単だが、a列の値ごとに差分を求めたい場合は少しばかり工夫がいる
ここで仮に普通にdf.diffしてしまうと、1行ごとに差分をとってしまいうまくかない。
df.diff() a b c 1 NaN NaN NaN 2 1.0 1.0 2.0 3 -1.0 6.0 0.0
そこでgroupbyをかませる。
df.groupby('a').diff() b c 1 NaN NaN 2 NaN NaN 3 7.0 2.0