现在的位置: 首页 > 建站运维教程 > 正文

python去重的方法(对列表去重/对数据框去重)

2023年01月13日 建站运维教程 ⁄ 共 993字 ⁄ 字号 暂无评论

Python编程过程中经常会遇到列表去重的问题,下面这篇文章主要给大家介绍了python列表去重的2种常见方法:

一、对列表去重

1.用循环查找的方式

li = [1,2,3,3,4,2,3,4,5,6,1]
news_li = []
for i in li:
    if i not in news_li:
        news_li.append(i)
print (news_li)

2.用集合的特性set()

li1 = [1,4,3,3,4,2,3,4,5,6,1]
new_li1 = list(set(li1))

3.使用itertools模块的grouby方法

import itertools
li2 = [1,4,3,3,4,2,3,4,5,6,1]
li2.sort() # 排序
it = itertools.groupby(li2)
for k, g in it:
    print (k)

4.运用while循环遍历的方式

def quchong(lb):
    for x in lb:
        while lb.count(x)>1:
            del lb[lb.index(x)]
    return lb
li3 = [1,4,3,3,4,2,3,4,5,6,1]
quchong(li3)

5.使用keys()方式

li4 = [1,0,3,7,7,5]
formatli = list({}.fromkeys(li4).keys())
print (formatli)

二、对数据框去重

1.用unique()对单属性列去重

import pandas as pd
data = {'id':['A','B','C','C','C','A','B','C','A'],'age':[18,20,14,10,50,14,65,14,98]}
data = pd.DataFrame(data)
data.id.unique()
#或者
import numpy as np
np.unique(data.id)

2.用frame.drop_duplicates()对单属性列去重

data.drop_duplicates(['id'])

3.用frame.drop_duplicates()对多属性列去重

data.drop_duplicates(['id','age'])

4.用frame.duplicated()对多属性列去重

isduplicated = data.duplicated(['id','age'],keep='first')
data.loc[~isduplicated,:]

给我留言

您必须 [ 登录 ] 才能发表留言!