🚀

pandas DataFrameで、条件に合う行の前後を取りたいとき

2023/12/30に公開1

金融時系列データを使用しているときによくあるのが、収益率の異常値を見つけて、その前後の価格を確認したいとき。

まずは条件に合う列を抜き出すが、前後が取れない。

df[df["ret"]>100]

そこで、indexに変換してから一つ足し引きしてやる

indices = df[df["ret"]>100].index
df.loc[indices-1,:]

Discussion

nkaynkay
df[df["ret"].shift(-1) > 100]

の方が効率が良いと思われます。indexがRangeIndexでない場合でも有効です。