dataframe中存在重複的行或者幾行中某幾列的值重複,這時候需要去掉重複行,示例如下:
def
set_data
(data, namelist, mode=
'all'):
''' 各種去重操作
:param data:待處理資料dataframe
:param mode:去重模式 all,select,drop,specially
:param namelist:可選的字段/要刪除的資料,list
:return: 去重後的資料dataframe
'''#1、完全去重mode='all'
if mode ==
'all'
: setdata = data.drop_duplicates(subset=
none
, keep=
'first'
, inplace=
false
)print
('重複資料{}條,剩餘{}條'
.format
(len
(data)
-len
(setdata)
,len
(setdata)))
#2、選字段去重mode='select'
if mode ==
'select'
: setdata = data.drop_duplicates(subset=namelist, keep=
'first'
, inplace=
false
)print
('重複資料{}條,剩餘{}條'
.format
(len
(data)
-len
(setdata)
,len
(setdata)))
#3、刪除欄位去重mode='drop'
if mode ==
'drop'
: setdata = data.drop(namelist, axis=1)
setdata = setdata.drop_duplicates(subset=
none
, keep=
'first'
, inplace=
false
)print
('重複資料{}條,剩餘{}條'
.format
(len
(data)
-len
(setdata)
,len
(setdata)))
#4、特定資料去重mode='specially'
if mode ==
'specially'
: droplist =
for i in
range
(len
(data)):
for j in
range
(len
(namelist)):
if data[
'a']
[i]== namelist[j][0
]and data[
'b']
[i]== namelist[j][1
]:break
setdata = data.drop(droplist, axis=0)
print
('重複資料{}條,剩餘{}條'
.format
(len
(data)
-len
(setdata)
,len
(setdata)))
setdata = setdata.reset_index(drop=
true
)return setdata
data=data.drop_duplicates(subset=
['a'
,'b'
],keep=
'first'
,inplace=
false
)
1、**中subset對應的值是列名,表示只考慮這幾列,將這幾列對應值相同的行進行去重。預設值為subset=none表示考慮所有列。
2、keep='first』表示保留第一次出現的重複行,是預設值。keep另外兩個取值為"last"和false,分別表示保留最後一次出現的重複行和去除所有重複行。
3、inplace=true表示直接在原來的dataframe上刪除重複項,而預設值false表示生成乙個副本,將副本賦值dataframe。
setdata = data.drop(
['a'
,'b'
], axis=1)
setdata = data.drop([1
,5], axis=
0)
1、dataframe上刪除某行/某列,axis=1為刪除某列,對應的為列名;axis=0為刪除某行,對應的index值。
注意事項:
setdata = setdata.reset_index(drop=
true
)
對去重後的資料要重建索引,否則後續操作可能報
"in pandas._libs.hashtable.int64hashtable.get_item"這個錯誤。
Pandas統計分析基礎之DataFrame
3 更改dataframe中的資料 4 增加dataframe中的資料 刪除dataframe中的資料 dataframe類似於資料庫的表或者excel的 panda將資料讀取之後,以dataframe的資料結構儲存在記憶體中。下面就來介紹一下dataframe的增刪查改操作。因為dataframe...
pandas 去除重複行
方法 dataframe.drop duplicates subset none,keep first inplace false 1引數 這個drop duplicate方法是對dataframe格式的資料,去除特定列下面的重複行。返回dataframe格式的資料。subset column la...
Spark 解析XML檔案到DataFrame
公司遇到一點需求,平時load檔案基本上都是csv格式的檔案,可是就有那麼乙個檔案是xml檔案,這也正常,因為檔案是別的team推過來的,自然要遵循他們的格式,於是就要想辦法解析xml檔案。目標是把xml檔案轉換為dataframe,然後寫到表中。可是spark.reader並沒有讀取xml格式檔案...