利用集合的不重復(fù)屬性,可以先轉(zhuǎn)換至集合,再用list()函數(shù)轉(zhuǎn)換回來(lái)即可。

我們擁有10年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、成都做手機(jī)網(wǎng)站、H5開(kāi)發(fā)、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
比如,a是一個(gè)列表,a=list(set(a)),即可完成列表去重。
case1:用集合的特性set(),去重后順序會(huì)改變
case1.1:可以通過(guò)列表中索引(index)的方法保證去重后的順序不變
case2:使用循環(huán)查找的方式,不改變順序
case3:通過(guò)刪除索引
case4:itertools.groupby
case5:fromkeys
case6:reduce方法
df.drop_duplicates('item_name')
方法一:
df.drop_duplicates('item_name').count()
方法二:
df['item_name'].nunique()
結(jié)果:50
附:nunique()和unique()的區(qū)別:
unique()是以 數(shù)組形式(numpy.ndarray)返回列的所有唯一值(特征的所有唯一值)
nunique()即返回的是唯一值的個(gè)數(shù)
比如:df['item_name'].unique()
要求:將下表中經(jīng)驗(yàn)列將按周統(tǒng)計(jì)的轉(zhuǎn)換為經(jīng)驗(yàn)不限,保留學(xué)歷
df1['經(jīng)驗(yàn)'] = df1['經(jīng)驗(yàn)'].apply(lambda x: '經(jīng)驗(yàn)不限'+ x[-2:] if '周' in x else x)
#解釋:將‘5天/周6個(gè)月’變成‘經(jīng)驗(yàn)不限’,然后保留學(xué)歷‘本科’
方法二:定義函數(shù)
def dataInterval(ss):
if '周' in ss:
? ? return '經(jīng)驗(yàn)不限'+ ss[-2:]
return ss
df1['經(jīng)驗(yàn)'] = df1['經(jīng)驗(yàn)'].apply(dataInterval)
這是一個(gè)字符串的全角和半角的問(wèn)題,可以導(dǎo)入?unicodedata?中的?normalize?函數(shù)先把全角轉(zhuǎn)換為半角,然后再用?set?對(duì)列表去重,參考代碼如下:
from?unicodedata?import?normalize
list3=['熱菜','凉菜','涼菜','硬菜']
set(map(lambda?s:?normalize('NFKC',?s),?list3))
輸出:
{'硬菜',?'熱菜',?'涼菜'}
擴(kuò)展:
“?NFKC”代表“Normalization?Form?KC?[Compatibility?Decomposition,?followed?by?Canonical?Composition]”,并將全角字符替換為半角字符,這些半角字符與Unicode等價(jià)。
前兩天處理數(shù)據(jù)的時(shí)候,需要得到兩個(gè)數(shù)據(jù)的交集數(shù)據(jù),所以要去除數(shù)據(jù)中非重復(fù)部分,只保留數(shù)據(jù)中的重復(fù)部分。
?? 網(wǎng)上看了一下大家的教程,大部分都是教去除重復(fù)行,很少有說(shuō)到僅保留重復(fù)行的。所以在這里用drop_duplicates這個(gè)去重函數(shù)來(lái)實(shí)現(xiàn)這個(gè)功能。
drop_duplicates函數(shù)介紹 :
data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)
#subset對(duì)應(yīng)的值是列名,表示只考慮這兩列,將這兩列對(duì)應(yīng)值相同的行進(jìn)行去重。
默認(rèn)值為subset=None表示考慮所有列。
keep='first’表示保留第一次出現(xiàn)的重復(fù)行,是默認(rèn)值。
keep另外兩個(gè)取值為"last"和False,分別表示保留最后一次出現(xiàn)的重復(fù)行和去除所有重復(fù)行。
inplace=True表示直接在原來(lái)的DataFrame上刪除重復(fù)項(xiàng),而默認(rèn)值False表示生成一個(gè)副本。
要用函數(shù)取得數(shù)據(jù)集data中的重復(fù)列,分三個(gè)步驟 :
(提前導(dǎo)入pandas模塊)
data0_1 = data.drop_duplicates() #保留第一個(gè)重復(fù)行
data0_2 = data.drop_duplicates(keep=False) #去除所有重復(fù)行
data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)
#合并起來(lái)再去重,只剩下真的重復(fù)行。
舉例:data中wangwu行和tony行重復(fù),需要把它們兩行取出。
第一步:#保留第一個(gè)重復(fù)行
第二步:#去除所有重復(fù)行
第三步:#合并起來(lái)再去重
通過(guò)以上步驟實(shí)現(xiàn)取出數(shù)據(jù)中的重復(fù)行。
利用set()函數(shù),可以將列表去重,如:
s = [1, 3, 3, 5, 7, 7, 8, 9]
set(s) #輸出為{1, 3, 5, 7, 8, 9}
list(set(s)) #輸出 [1, 3, 5, 7, 8, 9]
標(biāo)題名稱:python3去重函數(shù) python去重方法
本文地址:http://chinadenli.net/article44/hpishe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、建站公司、關(guān)鍵詞優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)