【发布时间】:2016-06-20 07:52:48
【问题描述】:
我需要在行中合并两个具有不同信息的 csv 文件。我知道我可以用 bash 中的 join 命令做一些事情(来自this answer),但我不知道如何将它应用到我的数据中。
以下是两个 csv 的示例:
CSV1:
Andre-Morange.trs;André Morange;2;no;M;58;yes;IDF;
Andre-Morange.trs;Sara enq;1;yes;F;63;yes;IDF / Nice;SARA
Anita Musso trs.trs;Anita Musso;1;no;F;46;yes;?;
Anita Musso trs.trs;Sarah enq;2;yes;F;63;yes;IDF / Nice;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine Ceret.trs;Blanche;4;no;F;25;yes;IDF;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine Ceret.trs;Jean-Pierre;2;no;M;60;yes;IDF;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine Ceret.trs;Reine;3;no;F;60;yes;IDF;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine Ceret.trs;Sarah enq;1;yes;F;63;yes;IDF / Nice;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Christophe;3;no;M;61;yes;IDF;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Dame + enqSarah;;;;;;;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Dame + homme;4;;;;;;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;enqSarah;1;yes;F;63;yes;IDF / Nice;SARA
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Marie-Anne;2;no;F;62;yes;IDF;
CSV2:
Andre-Morange.trs;André Morange;2;
Andre-Morange.trs;Nasser;3;
Andre-Morange.trs;Sara enq;1;
Andre-Morange.trs;speaker#4;4;
Anita_Musso_trs.trs;Anita Musso;1;
Anita_Musso_trs.trs;Sarah enq;2;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine_Ceret.trs;Blanche;4;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine_Ceret.trs;Jean-Pierre;2;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine_Ceret.trs;Reine;3;
Blanche_Duchemin_Jean_Pierre_Duchemin_Reine_Ceret.trs;Sarah enq;1;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Christophe;3;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;dame + enqSarah;5;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;dame + homme;4;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;enqSarah;1;
Christophe_Andre_H_62_Marie_Anne_Andre_F_63_5e.trs;Marie-Anne;2;
这里它只是两个 CSV 的一个子部分。重要的是第一个 CSV 比第二个有更多列但更少行(CSV1 有 965 行和 8 列,而 CSV2 有 1496 行和 3 列)。但是 CSV2 中的某些行在 CSV1 中不存在。我想合并这两个文件,最后,我添加了 CSV2 中的所有行,除了 CSV1 中已经存在的行。
我希望我的问题不会太令人困惑,我一直在寻找一种方法来做到这一点几个小时,我自己也很困惑!
【问题讨论】:
-
你想
join基于file1和file2的第一列..对吗? -
如果我不清楚,我很抱歉。我希望输出与 CSV1 相同,添加了 CSV2 中包含的所有行,除了 CSV1 中已经存在的 CSV2 行(前三列相同),因为如果它们在 CSV1 中,它们有更多列和因此我想保留的信息。