前兩天處理數據的時候,需要得到兩個數據的交集數據,所以要去除數據中非重復部分,只保留數據中的重復部分。
在雙城等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站制作、網站設計 網站設計制作按需求定制網站,公司網站建設,企業網站建設,成都品牌網站建設,網絡營銷推廣,外貿網站建設,雙城網站建設費用合理。
?? 網上看了一下大家的教程,大部分都是教去除重復行,很少有說到僅保留重復行的。所以在這里用drop_duplicates這個去重函數來實現這個功能。
drop_duplicates函數介紹 :
data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)
#subset對應的值是列名,表示只考慮這兩列,將這兩列對應值相同的行進行去重。
默認值為subset=None表示考慮所有列。
keep='first’表示保留第一次出現的重復行,是默認值。
keep另外兩個取值為"last"和False,分別表示保留最后一次出現的重復行和去除所有重復行。
inplace=True表示直接在原來的DataFrame上刪除重復項,而默認值False表示生成一個副本。
要用函數取得數據集data中的重復列,分三個步驟 :
(提前導入pandas模塊)
data0_1 = data.drop_duplicates() #保留第一個重復行
data0_2 = data.drop_duplicates(keep=False) #去除所有重復行
data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)
#合并起來再去重,只剩下真的重復行。
舉例:data中wangwu行和tony行重復,需要把它們兩行取出。
第一步:#保留第一個重復行
第二步:#去除所有重復行
第三步:#合并起來再去重
通過以上步驟實現取出數據中的重復行。
case1:用集合的特性set(),去重后順序會改變
case1.1:可以通過列表中索引(index)的方法保證去重后的順序不變
case2:使用循環查找的方式,不改變順序
case3:通過刪除索引
case4:itertools.groupby
case5:fromkeys
case6:reduce方法
1、運用新建字典的方式,去除重復的鍵
2、利用集合,直接將列表轉化為集合,自動去重后轉回列表。有一個問題,轉換為集合的同時,數據無序了。
3、用列表的推導式
df.drop_duplicates('item_name')
方法一:
df.drop_duplicates('item_name').count()
方法二:
df['item_name'].nunique()
結果:50
附:nunique()和unique()的區別:
unique()是以 數組形式(numpy.ndarray)返回列的所有唯一值(特征的所有唯一值)
nunique()即返回的是唯一值的個數
比如:df['item_name'].unique()
要求:將下表中經驗列將按周統計的轉換為經驗不限,保留學歷
df1['經驗'] = df1['經驗'].apply(lambda x: '經驗不限'+ x[-2:] if '周' in x else x)
#解釋:將‘5天/周6個月’變成‘經驗不限’,然后保留學歷‘本科’
方法二:定義函數
def dataInterval(ss):
if '周' in ss:
? ? return '經驗不限'+ ss[-2:]
return ss
df1['經驗'] = df1['經驗'].apply(dataInterval)
分享題目:python集合去重函數,python合并去重
網站路徑:http://m.kartarina.com/article32/heidsc.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、品牌網站建設、面包屑導航、定制開發、企業網站制作、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯