A秀秀 发表于 2021-9-14 00:47:08

求助Excel 表格中 删除数据重复 写法!


不管行还是列里面只要重复的数据都要删除,只留一个,网上搜了发现只有讲解单行单列的,不知道怎么具体怎么写。
求助大佬!

白two 发表于 2021-9-14 09:02:39

你的意思是可能一个数据在1行1列,一个在3行4列,只要重复也要删?怎么会有这么奇怪的需求?
建议所有数据提取做成字典,然后去判断值是否相等,相等则删除
当然如果数据量过于大,当我没说

慕羽 发表于 2021-9-14 10:10:02

可以先放到列表里,然后根据 from collections import Counter 这个模块的函数,对列表查询出一个字典。
比如这样:
from collections import Counter
a =
b = Counter(a)# 求数组中每个数字出现了几次
print(b)
结果:
Counter({2: 3, 4: 2, 3: 2, 1: 1})

然后根据得到的这个Counter 对象,可以取出每个值对应的重复次数,然后再对应保留删除?

Twilight6 发表于 2021-9-16 11:44:33



删除重复的数据后,单元格为空,看看是不是你想达到的效果:

参考代码:

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秀秀 发表于 2021-9-16 16:53:09

列是字母A B C那种 ,不是数字

Twilight6 发表于 2021-9-17 10:34:01

A秀秀 发表于 2021-9-16 16:53
列是字母A B C那种 ,不是数字



楼主没有 pandas 基础吧

上面代码是 df 举例子,自动读取行列索引,是不是数字、字母没有关系

如果你自己不会调,就把表结构发出来

晴雨皆宜 发表于 2021-9-17 14:18:43

开卷有益,学习学习····

傻眼貓咪 发表于 2021-9-17 14:54:55

本帖最后由 傻眼貓咪 于 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]
查看完整版本: 求助Excel 表格中 删除数据重复 写法!