pandasで簡単な条件でフラグを作る方法などは下記の記事で紹介しました。

pandasに新しいカラムを追加する5つの方法
ヒノマルク今回はDataFrameに新しいカラムを追加する方法をまとめました。例えば全て1という値のカラムを追加したり、特定のルールにしたがって区分値を付与し直す時などに新規カラムを追加することになります。ボストンの住宅価格データセットを読...
今回はより複雑な条件で、データを上から順に処理をすることで汎用的に使えそうな方法を試してみました。
この方法を使うことによって例えば、日売データから「商品ごとに累積金額を計算するときに3回目の祝日でリセットする」であったり、「累積売上金額が50万円になったらフラグを立てる」などの複雑な処理が可能になります。
下記で本記事のコードをテンプレートとして、ナップサック問題を解くために使っています。

【ナップサック問題】単元未満株と楽天銀行の株式配当金受取プログラムでお得な組み合わせは何かシュミレーションしてみる その2
本記事の内容を利用する場合は自己責任でお願いいたします。投資を勧めている訳ではありません。前回、単元未満株と楽天銀行の配当金受取プログラムでお得な組み合わせは何かシュミレーションの方向性を考えました。今回は実際に2022/11/25の株価情...
あくまで様々な方法論のうち一つの手段になるので、データ加工のやり方に悩んだときに参考として参照してみてください。
サンプルデータの作成
サンプルとして、KEYとFLGのみを持つpandasのデータを作成します。
Out[0]
KEY FLG 0 apple 0 1 apple 0 2 apple 0 3 apple 0 4 apple 0 5 banana 0 6 banana 0 7 banana 0 8 banana 0 9 banana 0 10 orange 0 11 orange 0 12 orange 0 13 orange 0 14 orange 0
出来ました。フラグの値は全て0にしています。
テンプレートのつもりでpandasのデータを上から順にキーごとに処理をするコードを書きました。
キーごとの先頭行のFLGは0、それ以外は1にする処理を例として記載しています。
応用すれば色々な加工データを作れるはずです。
pandasのデータを上から順に1行ずつ処理する
数十万件のデータを日次で処理しても大丈夫なはず。(性能試験はやった方がいい)
加工後のデータを確認
result_dfを確認
Out[0]
KEY FLG CURRENT_DT 0 apple 0 2022/11/30 1 apple 1 2022/11/30 2 apple 1 2022/11/30 3 apple 1 2022/11/30 4 apple 1 2022/11/30 5 banana 0 2022/11/30 6 banana 1 2022/11/30 7 banana 1 2022/11/30 8 banana 1 2022/11/30 9 banana 1 2022/11/30 10 orange 0 2022/11/30 11 orange 1 2022/11/30 12 orange 1 2022/11/30 13 orange 1 2022/11/30 14 orange 1 2022/11/30
使用ライブラリのバージョン
Out[0]
pandas 1.5.2 numpy 1.23.5
まとめ
簡単な例ですが、テンプレートとして使えればいいなと思い記事にまとめてみました。
ここで加工したデータをデータベースにインサートするなどしてシステム側で参照するなども出来るかと思います。