Python去掉或保留数据集中的重复行

有的时候我们会遇到这样的情况,数据集中一些列或所有列在某些行上取值相同,我们想要删掉完全重复的行,或者保留这些重复行,仅仅删除与其重复的那些行,那我们该怎么做呢?

 DataFrame.drop_duplicates(subset = None, keep = 'first')

我们处理重复行的想法可以通过DataFrame.drop_duplicates()中的参数完全实现。

其中subset这个参数默认‘None’是指选择所有列,即所有列的值都相同我才认为这两行是重复的,也可以自定义为其中一部分列变量名,比如subset=['name','sex','age']。

keep这个参数默认为‘first’,注意这里参数填写是字符串类型,在多个重复行中保留第一行,同理,‘last’是在多个重复行中保留最后一行。所以,如果subset我们使用默认参数None的话,那么keep参数中'first'和‘last’效果是一样的(但保留的对应index不同),因为这时候选择的重复行要求所有列的取值是相同的,而subset选择其中一些列的话,选择keep参数中'first'和‘last’会根据index的前后产生不同的效果。参数False会去除所有重复行。

举个栗子:

        name       sex         age

0    coco    female      7

1      lily         female        7

2     joe         male          15

3      coco    female        7

在这个例子中,如果我使用代码 DataFrame.drop_duplicates(subset = None, keep = 'first'),产生的结果如下:

        name       sex         age

0    coco    female           7

1      lily         female        7

2     joe         male          15

若使用代码DataFrame.drop_duplicates(subset = None, keep = 'last'),结果如下:

        name       sex         age

1      lily         female        7

2     joe         male          15

3      coco    female        7

发现不考虑index以及行的顺序,效果与参数first相同。

若使用代码DataFrame.drop_duplicates(subset = None, keep = False), 结果如下:

        name       sex         age

1      lily         female        7

2     joe         male          15

所有重复的行都被删除,没有保留。

若使用代码DataFrame.drop_duplicates(subset = ['sex' , 'age'] , keep = False), 结果如下:

        name       sex         age

2     joe         male          15







猜你喜欢

转载自blog.csdn.net/kkkkkiko/article/details/80995807