鱼C论坛

 找回密码
 立即注册
查看: 1528|回复: 7

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

[复制链接]
发表于 2021-9-14 00:47:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

不管行还是列里面只要重复的数据都要删除,只留一个,网上搜了发现只有讲解单行单列的,不知道怎么具体怎么写。
求助大佬!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-14 09:02:39 | 显示全部楼层
你的意思是可能一个数据在1行1列,一个在3行4列,只要重复也要删?怎么会有这么奇怪的需求?
建议所有数据提取做成字典,然后去判断值是否相等,相等则删除
当然如果数据量过于大,当我没说
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 10:10:02 | 显示全部楼层
可以先放到列表里,然后根据 from collections import Counter 这个模块的函数,对列表查询出一个字典。
比如这样:
from collections import Counter
a = [1, 4, 2, 3, 2, 3, 4, 2]
b = Counter(a)  # 求数组中每个数字出现了几次
print(b)
结果:
Counter({2: 3, 4: 2, 3: 2, 1: 1})

然后根据得到的这个Counter 对象,可以取出每个值对应的重复次数,然后再对应保留删除?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 11:44:33 | 显示全部楼层


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

参考代码:

  1. import pandas as pd

  2. df = pd.DataFrame(
  3.     [[1, 2, 3, 1, 1],
  4.      [3, 4, 5, 7, 5],
  5.      [1, 4, 3, 5, 1]])

  6. for i in range(df.shape[0]):
  7.     data = df.iloc[i, :]
  8.     for l in df.iloc[i, :].unique():
  9.         indexs = data[data.values == l].index
  10.         for c in indexs[1:]:
  11.             df.iloc[i, c] = None

  12. for i in df.columns:
  13.     data = df[i]
  14.     for l in df[i].unique():
  15.         indexs = data[data.values == l].index
  16.         for r in indexs[1:]:
  17.             df.iloc[r, i] = None

  18. print(df)
复制代码


输出效果:

  1.      0    1    2    3   4
  2. 0  1.0  2.0  3.0  NaN NaN
  3. 1  3.0  4.0  5.0  7.0 NaN
  4. 2  NaN  NaN  NaN  5.0 NaN
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-16 16:53:09 | 显示全部楼层
列是字母A B C那种 ,不是数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 10:34:01 | 显示全部楼层
A秀秀 发表于 2021-9-16 16:53
列是字母A B C那种 ,不是数字




楼主没有 pandas 基础吧

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 14:18:43 | 显示全部楼层
开卷有益,学习学习····
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 14:54:55 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-17 14:56 编辑

我的代码(无导入模组/库):
  1. def deleteDuplicates(arr: list[list]) -> list[list]:
  2.     res = arr
  3.     for row in res:
  4.         for n, data in enumerate(row):
  5.             if n:
  6.                 if data in row[:n]:
  7.                     row[n] = None
  8.     res = [list(col) for col in zip(*res)]

  9.     for col in res:
  10.         for n, data in enumerate(col):
  11.             if n:
  12.                 if data in col[:n]:
  13.                     col[n] = None

  14.     res = [list(row) for row in zip(*res)]
  15.     return res

  16. arr = [
  17.     [1, 2, 3, 1, 1],
  18.     [3, 4, 5, 7, 5],
  19.     [1, 4, 3, 5, 1]
  20. ]

  21. res = deleteDuplicates(arr)

  22. for row in res:
  23.     for data in row:
  24.         if data:
  25.             print(f"{data:4} ", end = '')
  26.         else:
  27.             print(f"{None} ", end = '')
  28.     print()
复制代码
  1.    1    2    3 None None
  2.    3    4    5    7 None
  3. None None None    5 None
复制代码
是不是数字也没有影响
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表