前提・実現したいこと
pythonのpandasを使用してDataFrameの処理をしたいのですが、以前に質問したことについて、想定外のデータが追加されたので、さらに追加で質問したく、投稿します。
発生している問題・エラーメッセージ
これを以下のルールに従って処理したいと考えています。
a-number
とb-number
が同一のデータにおいて、時間が最新の"tag"=="on"
のデータに"tag"=="off"
のデータがなければ残す
具体例
- [a-b]numberが0-0の場合-->on-offが揃っているのでdrop
- [a-b]numberが0-1の場合-->onのデータしかないのでそのまま残す
- [a-b]numberが0-2の場合-->C, D, Eそれぞれがon-off揃っているのでdrop
- [a-b]numberが0-3の場合-->最新のonはHで、かつ、Hのoffはないのでそのまま残す
- [a-b]numberが0-4の場合-->最新のonはJで、かつ、Jのoffはないのでそのまま残す
あまりにも難しくて手に負えなかったので、ぜひよろしくおねがいします。
データコピペ用
csv = """ datetime,a-number,b-number,tag,status 2021-11-12T01:01:01+09:00,00,0,A,on 2021-11-12T02:02:02+09:00,00,0,A,off 2021-11-12T03:03:03+09:00,00,1,B,on 2021-11-12T04:04:04+09:00,00,2,C,on 2021-11-12T05:05:05+09:00,00,2,D,on 2021-11-12T06:06:06+09:00,00,2,D,off 2021-11-12T07:07:07+09:00,00,2,C,off 2021-11-12T08:08:08+09:00,00,2,E,on 2021-11-12T09:09:09+09:00,00,2,E,off 2021-11-12T10:10:10+09:00,00,3,F,on 2021-11-12T11:11:11+09:00,00,3,G,on 2021-11-12T12:12:12+09:00,00,3,F,off 2021-11-12T13:13:13+09:00,00,3,H,on 2021-11-12T14:14:14+09:00,00,3,G,off 2021-11-12T15:15:15+09:00,00,4,I,on 2021-11-12T16:16:16+09:00,00,4,K,on 2021-11-12T17:17:17+09:00,00,4,J,on 2021-11-12T18:18:18+09:00,00,4,K,off """ data_list = pd.read_csv(io.StringIO(csv)) df = pd.DataFrame(data_list, columns = ["datetime","a-number","b-number","tag","status"])
回答1件
あなたの回答
tips
プレビュー