今天的问题是如何从多行数据中提取不重复的行,有重复的不管其重复项还是其本身都删除掉。如下图所示,提取出其中不重复的那一行:
刚开始想了半天,找了半天资料也没查到查到Python怎样直接提取不重复值,后面转念一想,提取不重复的不就是删除重复值吗?这死脑筋转不过弯。
进入正题,要把重复的项删掉,我们用到的是drop_duplicates来删除重复值:
这个方法有两个参数:
subset:要匹配重复项的列标签,可以是单独一个列,也可以是几个列,用序列表示。默认是选择所有列。
keep:删除重复项留下哪一行,keep=first:留下重复项中的第一行。keep=last:留下最后一行。keep=False:删除所有重复项。
提取完成
引申,那如果我们是通过导入csv文件的形式来处理数据,如果导入的文件没有列标签(column label)怎么办呢,还能通过subset进行匹配吗?其实read_csv在导入文件的时候已经为我们创建好列标签了。read_csv会默认将文件的第一行设置为列标签,如果我们不希望将第一行设置为列标签,需要给read_csv设置一个参数,header=None,这样pandas就会单独加上一列数据[0,1,2,3...]为列标签。subset通过这些标签来匹配就可以了。