質問: ### 実現したいこと Pandasで複数の列で重複したデータを除去したい。 タイトル、型番の各列で重複したものを除外したいです。 | タイトル | 型番 | 価格 | | --- | --- | --- | | タイトルA | **A1** | 10 | | **タイトル**B | B1 | 20 | | タイトルC | **A1** | 30 | | **タイトル**B | B2 | 40 | | タイトルD | C3 | 50 | というデータから | タイトル | 型番 | 価格 | | --- | --- | --- | | タイトルD | C3 | 50 | を抽出したいです。 タイトル列でタイトルBは重複、 型番列で型番A1は重複、 これらを除去してデータ抽出したいです。 drop_duplicatesを使用して抽出できそうですが 複数の列に対する抽出方法がわかりません。 すいませんがご教授をお願いします。
回答: 以下のように`.duplicated(`で重複行を抽出し、その結果をor演算し、さらにnotした結果が求める行になるかと思います。 ``` import pandas as pd from io import StringIO s = """タイトル,型番,価格 タイトルA,A1,10 タイトルB,B1,20 タイトルC,A1,30 タイトルB,B2,40 タイトルD,C3,50""" df = pd.read_csv(StringIO(s)) dt = df.duplicated('タイトル', keep=False) # keep=False 重複した行はどれも削除 dk = df.duplicated('型番', keep=False) df = df[~(dt|dk)] print(df) # タイトル 型番 価格 #5 タイトルD C3 50 ```