求助Excel 表格中 删除数据重复 写法!
不管行还是列里面只要重复的数据都要删除,只留一个,网上搜了发现只有讲解单行单列的,不知道怎么具体怎么写。
求助大佬!
你的意思是可能一个数据在1行1列,一个在3行4列,只要重复也要删?怎么会有这么奇怪的需求?
建议所有数据提取做成字典,然后去判断值是否相等,相等则删除
当然如果数据量过于大,当我没说 可以先放到列表里,然后根据 from collections import Counter 这个模块的函数,对列表查询出一个字典。
比如这样:
from collections import Counter
a =
b = Counter(a)# 求数组中每个数字出现了几次
print(b)
结果:
Counter({2: 3, 4: 2, 3: 2, 1: 1})
然后根据得到的这个Counter 对象,可以取出每个值对应的重复次数,然后再对应保留删除?
删除重复的数据后,单元格为空,看看是不是你想达到的效果:
参考代码:
import pandas as pd
df = pd.DataFrame(
[,
,
])
for i in range(df.shape):
data = df.iloc
for l in df.iloc.unique():
indexs = data.index
for c in indexs:
df.iloc = None
for i in df.columns:
data = df
for l in df.unique():
indexs = data.index
for r in indexs:
df.iloc = None
print(df)
输出效果:
0 1 2 3 4
01.02.03.0NaN NaN
13.04.05.07.0 NaN
2NaNNaNNaN5.0 NaN
列是字母A B C那种 ,不是数字 A秀秀 发表于 2021-9-16 16:53
列是字母A B C那种 ,不是数字
楼主没有 pandas 基础吧
上面代码是 df 举例子,自动读取行列索引,是不是数字、字母没有关系
如果你自己不会调,就把表结构发出来
开卷有益,学习学习···· 本帖最后由 傻眼貓咪 于 2021-9-17 14:56 编辑
我的代码(无导入模组/库):
def deleteDuplicates(arr: list) -> list:
res = arr
for row in res:
for n, data in enumerate(row):
if n:
if data in row[:n]:
row = None
res =
for col in res:
for n, data in enumerate(col):
if n:
if data in col[:n]:
col = None
res =
return res
arr = [
,
,
]
res = deleteDuplicates(arr)
for row in res:
for data in row:
if data:
print(f"{data:4} ", end = '')
else:
print(f"{None} ", end = '')
print() 1 2 3 None None
3 4 5 7 None
None None None 5 None是不是数字也没有影响
页:
[1]