我有一些包含许多列和数百行的CSV。列是:CompanyName, Website, Address, PhoneNumber, Email1, Email2, Email3
。
我需要删除所有具有重复信息的行。问题是,对于一行是重复的,它不必具有相同的所有条目,它只需要至少有一个相同的行。
以下是除CompanyName
之外的几乎所有相同信息的两行示例。这只是这个问题的一个排列。
所以关键是基本上任意两行,它们在1列中共享相同的值,其中一行应该被删除。
因此,如果任意两行具有相同的CompanyName
,Email Address
,Phone Number
等,则应删除1。
最好的方法是什么?
修改1
我更希望创建一个新的,经过修改的CSV,删除重复的行。主要是因为我不想冒破坏/破坏现有CSV的风险。
修改2
请注意,我真正想要做的是避免N + 1问题,我将每行与800行CSV中的每一行进行比较。或者根据我的目标,这是不可能做到的?
答案 0 :(得分:0)
我有两个建议,一个是使用sort
(未经测试):
sort -u -t, -k1,1 -k2,2 (etc. one for each column you want unique) file
或者,如果要将此数据导入数据库,则可以在其上创建一个临时表,其中所有列都是唯一的,只需将所有CSV数据插入其中,忽略唯一约束异常。