pandas的drop_duplicates無法去重問題解決
之前沒研究過pandas的去重方法,今天用了一下,發(fā)現(xiàn)這個方法并不是那么好用,我的需求是去除所有列的重復值,并保留第一個重復的值,按我的想法應該是下面這樣寫
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'a':[1,1,float('nan'),1,4,5],
'b':[3,3,4,4,5,6],
'c':[4,4,5,5,6,7],
})
df1 = df1.drop_duplicates(keep='first')
df1但是結果卻不盡如人意,
a b c
0 1.0 3 4
2 NaN 4 5
3 1.0 4 5
4 4.0 5 6
5 5.0 6 7
如圖所示,并沒有刪除重復值,所以我只能一個一個列的刪,刪完在重新拼接在一起,
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'a':[1,1,float('nan'),1,4,5],
'b':[3,3,4,4,5,6],
'c':[4,4,5,5,6,7],
})
cols = df1.columns.to_list()
series_list = []
for col in cols:
tmp_s = df1[col].drop_duplicates(keep='first')
tmp_s = tmp_s.dropna()
tmp_s = tmp_s.reset_index(drop=True)
print(tmp_s)
series_list.append(tmp_s)
new_df = pd.concat(series_list,axis=1)
new_df結果
a b c
0 1.0 3 4
1 4.0 4 5
2 5.0 5 6
3 NaN 6 7
當然這樣數據的索引是無法跟之前的對應起來了,所以我猜pandas是想保留之前的數據的對應關系的,一旦有操作要破壞這種對應,它就不會執(zhí)行
drop_duplicates()官方的函數說明
解釋一下各個參數:
subset:表示要去重的列名,默認為 None。
keep:有三個可選參數,分別是 first、last、False,默認為 first,表示只保留第一次出現(xiàn)的重復項,刪除其余重復項,last 表示只保留最后一次出現(xiàn)的重復項,F(xiàn)alse 則表示刪除所有重復項。
inplace:布爾值參數,默認為 False 表示刪除重復項后返回一個副本,若為 Ture 則表示直接在原數據上刪除重復項,改變了原來的數據框。
ignore_index:布爾值參數,默認為False,表示保留原來的行索引,若為True,則表示重新設置行索引。
到此這篇關于pandas的drop_duplicates無法去重問題解決的文章就介紹到這了,更多相關pandas的drop_duplicates無法去重內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Django多數據庫聯(lián)用實現(xiàn)方法解析
這篇文章主要介紹了Django多數據庫聯(lián)用實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
python中playwright截屏API的實現(xiàn)
無論是屏幕錄制,還是屏幕截圖,Playwright都提供了簡潔的方法實現(xiàn),本文就來詳細的介紹一下python中playwright截屏API的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2026-01-01

