去除有重复的行

news2024/10/6 20:32:06

 【问题】

I have a csv file and I have duplicate as well as unique data getting add to it on a daily basis. This involves too many duplicates. I have to remove the duplicates based on specific columns. For eg:

csvfile1:

title1	title2	title3	title4	title5
abcdef 	12	13	14	15
jklmn 	12	13	56	76
abcdef 	12	13	98	89
bvnjkl 	56	76	86	96

Now, based on title1, title2 and title3 I have to remove duplicates and add the unique entries in a new csv file. As you can see abcdef row is not unique and repeats based on title1,title2 and title3 so it should be removedand the output should look like:

Expected Output CSV File:

title1 title2 title3 title4 title5
jklmn  12     13     56     76
bvnjkl 56     76     86     96

My tried code is here below:CSVINPUT file import csv

f = open("1.csv", 'a+')
writer = csv.writer(f)
writer.writerow(("t1", "t2", "t3"))
a =[["a", 'b', 'c'], ["g", "h", "i"],['a','b','c']] #This list is changed daily so new and duplicates data get added daily

for i in range(2):
    writer.writerow((a[i]))
f.close()

Duplicate removal script:

import csv
with open('1.csv','r') as in_file, open('2.csv','w') as out_file:
    seen = set() # set for fast O(1) amortized lookup
    for line in in_file:
        if line not in seen: continue # skip duplicate

        out_file.write(line)

My Output: 2.csv:

t1 t2 t3
a  b  c
g  h  i

Now, I do not want a b c in the 2.csv based on t1 and t2 only the unique g h i based on t1 and t2

有人给出解法但楼主表示看不懂

import csv
with open('1.csv','r') as in_file, open('2.csv','w') as out_file:
    seen = set()
    seentwice = set()
    reader = csv.reader(in_file)
    writer = csv.writer(out_file)
    rows = []
    for row in reader:
        if (row[0],row[1]) in seen:
            seentwice.add((row[0],row[1]))
        seen.add((row[0],row[1]))
        rows.append(row)
    for row in rows:
        if (row[0],row[1]) not in seentwice:
            writer.writerow(row)

【回答】

只要按前3个字段分组,选出成员计数等于1的组,再合并各组记录即可。如无特殊要求,此类结构化计算用SPL来实现要简单且易懂许多:

A
1=file("d:\\source.csv").import@t()
2=A1.group(title1,title2,title3).select(~.len()==1).conj()
3=file("d:\\result.csv").export@c(A2)

A1:读取文件source.csv中的内容。

A2:按前3个字段分组,选出成员计数等于1的组,再合并各组记录。

A3:将A2结果写入文件result.csv中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++程序开启大地址(虚拟内存),让32位程序使用4G内存的方,虚拟内存概念及寻址范围详解

如何让 32 位程序突破 2G 内存限制 一般情况下,32 位程序的内存大小被限制在了 2G,不过可以通过以下的操作来突破这个限制。 修改操作系统参数 这一步骤只针对 32 位操作系统,64 位操作系统可以跳过 用管理员权限打开一个命令行窗口 执行…

【数据库原理及应用】——安全性与完整性(学习笔记)

📖 前言:随着计算机的普及,数据库的使用也越来越广泛。为了适应和满足数据共享的环境和要求,DBMS要对数据库进行保护,保证整个系统的正常运转,防止数据意外丢失、被窃取和不一致数据产生,以及当…

【Linux】---认识进程

文章目录进程的概念1、什么是进程2、PCB3、查看进程4、初始fork()创建进程5、kill杀死进程进程的状态普适的操作系统下的状态运行阻塞挂起Linux下的状态理解R--运行状态S--睡眠状态D--深度睡眠状态T--暂停状态t--追踪暂停状态X--死亡状态Z--僵尸状态孤儿进程进程优先级进程的其…

先广度后深度,打开编程视野

古人云 “读万卷书,行万里路。” 书籍是人类进步的阶梯、培养阅读习惯,当一个人爱上读书的时候,眼睛都是发光的。 在小编看来,学习理念是【先广度后深度】,先把Java知识体系的东西都了解到,工作上先会用&…

【数据结构与算法】之动态规划经典问题

前言 本文为 【数据结构与算法】动态规划 经典问题相关介绍 ,具体将对最长递增子序列问题,找零钱问题,0-1背包问题相关动态规划算法问题进行详尽介绍~ 📌博主主页:小新要变强 的主页 👉Java全栈学习路线可…

【LeetCode】No.91. Decode Ways -- Java Version

题目链接:https://leetcode.com/problems/decode-ways/ 1. 题目介绍(Decode Ways) A message containing letters from A-Z can be encoded into numbers using the following mapping: 【Translate】: 包含从A到z的字母的消息可…

C++之继承详解(万字讲解)

这里是目录呀前言一、继承的概念及定义1.继承的概念2.继承定义(1)定义格式(2)继承关系和访问限定符(3)继承基类成员访问方式的变化二、继承中的作用域三、基类和派生类对象赋值转换四、派生类的默认成员函数五、继承与友元六、继承与静态成员七.复杂的菱形继承及菱形虚拟继承1.…

暗猝灭剂BHQ-2 氨基,BHQ-2 amine,CAS:1241962-11-7

产品描述 1、名称 英文:BHQ-2 amine 中文:BHQ-2 氨基 2、CAS编号:1241962-11-7 3、所属分类:Other dyes 4、分子量:477.53 5、分子式:C24H27N7O4 6、质量控制:95% 7、储存: …

爱心html制作并部署github

手机也可以观看 效果预览地址 1.网页效果 心形优化 2.网页源码 源码地址 可以改变不同的图片&#xff0c;作者已经改为全局变量 <!DOCTYPE html> <html><head><title></title><script src"js/jquery-1.7.2.js"></script…

高并发,你真的理解透彻了吗?高并发核心编程手册荣登Github榜首

高并发&#xff0c;几乎是每个程序员都想拥有的经验。原因很简单&#xff1a;随着流量变大&#xff0c;会遇到各种各样的技术问题&#xff0c;比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等&#xff0c;这些问题能推动我们在技术深度上不断精进。 在过往的面…

Spring Cloud Ablibaba 学习系列文章

前言&#xff1a; 最近发现Spring Cloud的应用越来越多了&#xff0c;微服务的概念在一般的互联网公司上面几乎都会使用到&#xff0c;于是准备一套Spring Cloud Alibaba的学习文章&#xff0c;文章写到一定阶段&#xff0c;会进行实战篇&#xff0c;比如搭建注册通信的框架&a…

C. Crossword Validation(字典树)

Problem - C - Codeforces 题意: 你得到了一个在NN网格上完成的填字游戏。每个单元格要么是填有字母的白色单元格&#xff0c;要么是黑色单元格。你还会得到一本包含M个不同单词的字典&#xff0c;其中每个单词都有一个与之相关的分数。网格中的一个横向候选词是在网格的同一行…

Android TCPIP常见问题

book: Understanding Linux Network Internals socket读写错误返回值&#xff1a;errno TCP: Robert Elliot Kahn IP: Robert Elliot Kahn, Vint Cerf 1 RFC规范 RFC793&#xff1a;TCP RFC768&#xff1a;UDP RFC791&#xff1a;IP RFC826&#xff1a;ARP RFC792&#xff1a;I…

请求转发与请求重定向的区别

目录 1.实现 2.具体区别 1.有关实现 请求转发与重定向分别对应forward 和 redirect两个关键字&#xff0c;接下来我们在Java中尝试去实现一下。 1.1 请求转发 我们一般使用两种方式实现&#xff0c;具体代码见下&#xff1a; RequestMapping("/fw")public Strin…

【C】语言文件操作(一)

&#x1f648;个人主页&#xff1a; 阿伟t &#x1f449;系列专栏&#xff1a;【C语言–大佬之路】 &#x1f388;今日心语&#xff1a;越忙&#xff0c;越要沉住气&#xff01; 本章重点 : 为什么使用文件什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文本文件和…

Netty之I/O模型

UNIX提供的5种IO模型&#xff1a; 阻塞模型 阻塞IO模型&#xff1a; IO复用模型&#xff1a; 信号驱动IO模型&#xff1a; 对于五种IO模型我这里用自己的白话再复述一遍&#xff0c;加深理解&#xff0c;如果要看权威的解释可以自己去看《Netty权威指南》。 阻塞IO 进…

【算法】树状数组数据结构

文章目录Part.I 预备知识Chap.I 一些前提和概念Chap.II lowbit 函数Part.II 树状数组Chap.I 树状数组的思想Chap.II 树状数组的构造Part.III 树状数组的应用Chap.I LeetCode: 2426. 满足不等式的数对数目Sec.I 题目描述与分析Sec.II 代码实现Chap.II LeetCode: 51. 数组中的逆序…

计算机网络-网络层(ARP协议,DHCP协议,ICMP协议)

文章目录1. ARP协议2. DHCP协议3. ICMP协议1. ARP协议 首先数据在从网络层向下传递到数据链路层&#xff0c;在数据链路层中&#xff0c;要给报文封装源MAC地址和目的MAC地址。 其中获取目的MAC地址就是通过ARP协议 首先&#xff1a;每台主机都有一个ARP高速缓存&#xff08…

【VC++】字符串详解窗口第一个windows程序

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录系统调用顺序对比怎样避免确实动态链接库基本知识类型列表指针类型匈牙利标记法字符串详解Unicode 和 ANSI 函数TCHARs窗口WinMain我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xf…

微信小程序开发(超详细保姆式教程)

介绍&#xff1a; 微信里面app&#xff0c;16年推出 竞品&#xff1a;支付宝小程序&#xff0c;钉钉&#xff0c;美团&#xff0c;头条&#xff0c;抖音qq小程序 优点 1&#xff0c;在微信里面自由分享&#xff0c;2&#xff0c;不用下载app&#xff0c;3,能快速的开发&#xf…