実現したいこと
別のデータフレームから条件に合う行を検索し、該当する行を削除したいです。
レジの購買データを分析していて、返品などによりマイナス金額レコードが存在します。
マイナス金額を処理するために、該当のプラス金額レコードを検索し、相殺させたいです。
前提
<データフレーム>
index 店舗コード 会員番号 金額 取引日時
1 1001 111 100 2022/1/10
2 1002 222 200 2022/1/30
3 1001 111 200 2022/2/5
4 1003 555 500 2022/3/10
5 1002 111 200 2022/4/6
6 1001 111 200 2022/5/1
7 1004 444 600 2022/5/4
8 1002 333 500 2022/8/10
9 1001 111 -200 2022/8/11
10 1002 222 -200 2022/10/1
上記のフレームで、index10と2、9と7を消したいです。
(同日取引日などもあるので、条件に合致するレコードが1レコード見つかったら処理終了のようにし、
1対1に紐づけたいです)
試したこと
マイナス金額のデータとプラス金額のデータにフレームを分け、
日付日時が直近の順にソートしました。
#マイナスデータのみ抽出
data_minus = data[data['金額'] < 0]
#マイナスデータの並び替え
data_minus = data_minus.sort_values('取引日時',ascending=False)
#マイナス金額を絶対値に置き換え
data_minus['金額'] = data_minus['金額'].abs()
#プラスのデータのみ抽出し、並び替え
data = data[data['金額']>=0]
data = data.sort_values('取引日時',ascending=False)
data_minus['店舗コード'] == data['店舗コード']&
data_minus['会員番号'] == data['会員番号']&
data_minus['金額'] == data['会員番号'] &
data_minus['取引日時'] >= data['取引日時']
の条件に合致するレコードをdataのフレームから検索し、
最も日付の近い1レコードを削除したいと考えておりますが、
コードが分からずにいます。
補足情報(FW/ツールのバージョンなど)
for idx,row in data_minus.iterrows():
for文で繰り返し処理をする。iterrowsが使えそう?までは
調べたのですが、最終的にどのようにすればよいかが分からない状況です。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/19 08:03
2023/02/19 10:26