[Pandas 重複処理] 記録されているデータの条件で行うことができますか
解決したいこと
手元に紙運用で行っていた業務記録があり、作業単位でレコードがあります。
フォーマットはファイルメーカーを用いて作成し印刷していました。この複数年の記録をcsvファイルにまとめて分析したいと考えています。
ところが、手入力で複数の人が関わっているため、重複入力があり未完入力と完了入力が混ざっています。特に、年ごとにファイルを作ってあるため年末年始で乱れが多く生じ、必ずしも時系列の入力ではありません。
例)
作業ID | 着手日付 | 経過 | 終了日付 | 判断 |
---|---|---|---|---|
作業1 | 4/1 | |||
作業2 | 4/5 | 経過良好 | 4/14 | 完了 |
作業3 | 4/10 | 必要条件を満たさず | 4/20 | 中断 |
作業3 | 4/10 | 必要条件を満たさず | ||
作業1 | 4/1 | トラブルあるも改善 | 5/1 | 完了 |
このデータを未完成データによる重複を排除したデータにしたいです。
試してみたこと
まず、上記csvファイルをdfにとりこみ、duplicated,drop_duplicatesなどで処理する。
import pandas as pd
df = pd.read_csv('hyou.csv')
df.drop_duplicates(subset='作業ID', keep='first')
ところが、機械的なkeep='first'や'last'では未完成の入力データも混在して取り込んでしまいます。
重複のキー以外でのデータの条件をもとに有用なレコードのみを残すように一括処理できないでしょうか。
空白が少ないほうが正しいデータが入っているとの考えで、
# 新たに各行の空欄を数えた列を作る。
df['space']=df.isna().sum(axis=1)
としてみましたが、ここから先が進めなくなってしまいました。
ソートやdrop_duplicatesを組み合わせてできそうな気もしますが、アドバイスいただければ幸いです。
よろしくおねがいします。
背景情報
Python, Pandasの初心者です。独学でデータ管理に挑戦しています。
Python 3.8.3
pandas 1.2.1