python_List去重 & Df去重

列表去重

查找重复后删除

1
2
3
4
5
6
7
8
9
10
a=[1,2,1,4,2]
b=[]
for i in a:
if i not in b:
b.append(i)

print('新的列表中的元素有:','\n',b)
--->
新的列表中的元素有:
[1, 2, 4]

用list内置函数去重

1
2
3
4
5
6
a=[3,2,1,4,2,1,3]
b=list(set(a))
print('新的列表中的元素有:','\n',b)
--->
新的列表中的元素有:
[1, 2, 3, 4]

用字典的fromkeys()函数

1
2
3
4
5
6
7
8
9
10
a=[3,2,1,4,2,1,3]
b={}.fromkeys(a).keys() # b是一个字典,只包含key的字典
c=list(b) # 将字典的key转换成列表.如果转换字典的值成列表需要在字典后加:.values
print('新的列表中的元素有:','\n',c)
print('b的类型是:',type(b))

--->
新的列表中的元素有:
[3, 2, 1, 4]
b的类型是: <class 'dict_keys'>

使用sorted函数去重

1
2
3
4
5
6
7
a=[3,2,1,4,2,1,3]
b=sorted(set(a),key=a.index)
print('新的列表中的元素有:','\n',b)

--->
新的列表中的元素有:
[3, 2, 1, 4]

DataFrame去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
a=pd.DataFrame({'A': ['TP512','TP601','TP108','TP509','TP601'],'B':['M7','M5','M6','M5','M10']})
b = a.drop_duplicates()
c = a.drop_duplicates(subset='B',keep="first",inplace = False)
d = a.drop_duplicates(subset='B',keep="last",inplace = False)
e = a.drop_duplicates(subset='A',keep="first",inplace = False)

print('没有去重前:','\n',a)
print('全部列去重,删除重复保留首先出现的:','\n',b)
print('B列去重,删除重复保留首先出现的:','\n',c)
print('B列去重,删除重复保留最后出现的:','\n',d)
print('A列去重,删除重复保留最后出现的:','\n',e)

---->
没有去重前:
A B
0 TP512 M7
1 TP601 M5
2 TP108 M6
3 TP509 M5
4 TP601 M10
全部列去重,删除重复保留首先出现的:
A B
0 TP512 M7
1 TP601 M5
2 TP108 M6
3 TP509 M5
4 TP601 M10
B列去重,删除重复保留首先出现的:
A B
0 TP512 M7
1 TP601 M5
2 TP108 M6
4 TP601 M10
B列去重,删除重复保留最后出现的:
A B
0 TP512 M7
2 TP108 M6
3 TP509 M5
4 TP601 M10
A列去重,删除重复保留最后出现的:
A B
0 TP512 M7
1 TP601 M5
2 TP108 M6
3 TP509 M5