如何根据另一个CSV文件中的值和该值的存在从CSV文件中删除行

时间:2016-01-14 16:52:04

标签: csv duplicates

基本上我下载的数据集包含重复的人物,我使用sort删除了,但这些重复的行也在另一个csv文件中引用,我想删除这些行。这是概述;三个CSV文件:

person.csv

personID,personName
1,tom
[...]

job.csv

jobID,jobName
job_1,programmer
[...]

person_job.csv

personID,jobID
1,job_1
[...]

person_job.csv中的某些personID在person.csv中不存在。所以,我需要删除person_job.csvpersonIDperson.csv不存在的行{/ 1}}。

我该怎么做?我在OS X上,我愿意使用任何方法(ruby / perl / awk / python /等等)。

1 个答案:

答案 0 :(得分:0)

我是用Ruby做的,这是如何:

  • 在person.csv

  • 中创建一个ID数组(称为a)
  • 在person_job.csv中创建一个ID数组(名为b)

  • 创建a&之间差异的第三个数组b(c = b - a)。此数组包含我们需要从person_job.csv

  • 中删除的行的ID

从person_job.csv创建一个表:

table = CSV.table('person_job.csv')

如果ID出现在数组c中,则从表中删除:

table.delete_if do |row|
    c.include? row[:person_id]
end

将表格写入CSV,我将用它来替换{​​{1}}:

person_job.csv