次のような問題がある:Pythonのパンダ条件付き更新
- 列は次のとおりです:姓、名、部署(コンサルティングやセールス、それぞれCとSに略す)、従業員ID、および給与。この例では、salaryカラムには何も機能はありません。実際には他の列がたくさんあることを強調するだけです。
- 特定の名前はとの間に重複しています。
- これが役立つかどうかはわかりませんが、
first_name + last_name + id
は各行に固有の識別子を形成します。これは、以前の重複除去シナリオで最も重複しているものを識別する最短の一意の識別子であるため、これを使用する必要があります(1行目と2行目を参照)。一歩進んでこの識別子をさらに列に結びつけることもできますが、これは非常に洗練されたソリューションではありません。
次のように最初のデータフレームは、次のとおり
first_name | last_name | id | dept | salary
-------------------------------------------
sarah | jones | C1 | C | 60000
sarah | jones | C2 | C | 55000
robert | jones | C3 | C | 50000
alice | clarke | C4 | C | 40000
alice | clarke | S1 | S | 40000
thomas | roberts | S2 | S | 45000
I行4(コンサルティング DEPTに関連付けられているalice clarke
行)を削除し、行5を維持したいが、コンサルティングを保持するだろう部門ID。それは私が持っているべきである:
first_name | last_name | id | dept | salary
-------------------------------------------
sarah | jones | C1 | C | 60000
sarah | jones | C2 | C | 55000
robert | jones | C3 | C | 50000
alice | clarke | C4 | S | 40000
thomas | roberts | S2 | S | 45000
(IRL:私は2つのデータソースを有し、D1及びD2 D2のデータは、ISO規格のような、より高品質であるが、D1によって使用されるIDがより広く認識されていますD1とD2が同じ行を与えるたびに、D1 IDとD2の実際のデータを使用したいと思います。
実際の問題はこのMVWEよりも少し複雑です重複除去シナリオ)。私は、重複削除や条件付きで値を上書きするという私の以前の質問のいくつかを使って問題を切り詰めようとしましたが、問題を適切にモジュール化できなかったために全体的な問題にうまく対処できませんでした。条件付きで行を更新する場合のThis質問が役に立ちます。
明確にするために:あなたは常にSの複製を保持したいが、CのIDを保持したいのですか? – DyZ
もう1つ混乱している点:alice clarke C5もあるとします。さて、Alice clarke S1はC4かC5の複製ですか? – DyZ
例は非常に有用ですが、基本的には必要ですが、実際にどの基準を適用したいかを言い換えることに代わるものではありません。 – DSM