python-如何在大熊猫中以组为单位在单列中删除重复数据?

如果df按A,B和C分组,则看起来像这样:

    A    B      C    D
    1    53704  hf   51602
                     51602   
                     53802
                ss   53802
                     53802
    2    12811  hf   54205
                hx   50503

我尝试了以下内容,类似于另一篇文章中的内容:

    df.groupby([df['A'], df['B'], df['C']]).drop_duplicates(cols='D')

这显然是错误的,因为它会产生一个空的数据框.我还尝试了drop_duplicates的另一种变体,该变体简单地从“ D”中删除所有重复项,无论它位于哪个组中.我正在寻找的输出是:

    A    B      C   D
    1    53704  hf  51602
                    53802
                ss  53802
    2    12811  hf  54205
                hx  50503

因此,仅当重复项被分组到相同的A / B / C组合中时,它们才会被丢弃.

解决方法:

假设这些只是列,则可以直接使用drop_duplicates

In [11]: df.drop_duplicates(cols=list('ABCD'))
Out[11]: 
   A      B   C      D
0  1  53704  hf  51602
2  1  53704  hf  53802
3  1  53704  ss  53802
5  2  12811  hf  54205
6  2  12811  hx  50503

如果您对所有列的重复项感兴趣,则无需指定:

In [12]: df.drop_duplicates()
Out[12]: 
   A      B   C      D
0  1  53704  hf  51602
2  1  53704  hf  53802
3  1  53704  ss  53802
5  2  12811  hf  54205
6  2  12811  hx  50503
上一篇:MySQL-删除重复项


下一篇:MySQL:显示表中的特定记录?