今天的問題是如何從多行數據中提取不重復的行,有重復的不管其重復項還是其本身都刪除掉。如下圖所示,提取出其中不重復的那一行:
剛開始想了半天,找了半天資料也沒查到查到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通過這些標簽來匹配就可以了。