

DataFrameの抽出をしたいです。

A1 B1 C1  
A1 B1 C1  
A2 B2 C2  
A2 B2 C3  
A3 B3 C4  
A3 B3 C4  
A3 B3 C5

上のようなデータを下のように三列すべてが重複しないものについてはすべて残して重複を削除したいです。  
(0列目A1は残さないがA3は残したい)

A2 B2 C2  
A2 B2 C3  
A3 B3 C4  
A3 B3 C4  
A3 B3 C5

しかし、  
df.duplicated()を使うとこのようになります。

A2 B2 C2  
A2 B2 C3  
A3 B3 C5

df.duplicated(keep='last')とするとこのようになります。  
A1 B1 C1  
A2 B2 C2  
A2 B2 C3  
A3 B3 C4  
A3 B3 C5

どのように書けばよいでしょうか。


CC BY-SA 4.0
2020-06-16T04:41:36.213
67706
2020-06-16T10:59:15.573
2020-06-16T07:44:52.837
3060
40674
question
python
Python DataFrameの抽出をしたい


取り敢えず思い付いた方法で、`groupby()`で`Ax`毎に分けて判定する形にしてみました。  
速度とか洗練とかは考えていません。

[code]

    import pandas as pd
    
    data = [
        ['A1','B1','C1'],
        ['A1','B1','C1'],
        ['A2','B2','C2'],
        ['A2','B2','C3'],
        ['A3','B3','C4'],
        ['A3','B3','C4'],
        ['A3','B3','C5']
    ]
    
    df = pd.DataFrame(data)
    
    df2 = pd.DataFrame()
    for i, g in df.groupby(0):
        if not any(g.duplicated()): ## 重複無し
            df2 = pd.concat([df2,g], ignore_index=True)
        ## 重複有るが、更に別の値も有り
        elif (g.duplicated().value_counts(sort=False)[0] > 1):
            df2 = pd.concat([df2,g], ignore_index=True)
    
    print(df2)
    
[/code]


CC BY-SA 4.0
2020-06-16T10:59:15.573
67723
2020-06-16T10:59:15.573
26370
67706
answer