【发布时间】:2015-01-18 23:10:21
【问题描述】:
我有两个 csv 文件,如下所示。
CSV1
data13 data23 d main_data1;main_data2 data13 data23
data12 data22 d main_data1;main_data2 data12 data22
data11 data21 d main_data1;main_data2 data11 data21
data3 data4 d main_data2;main_data4 data3 data4
data52 data62 d main_data3 data51 data62
data51 data61 d main_data3 main_data3 data61
data7 data8 d main_data4 data7 data8
CSV2
id1 main_data1 a1 a2 a3
id2 main_data2 b1 b2 b3
id3 main_data3 c1 c2 c3
id4 main_data4 d1 d2 d3
id5 main_data5 e1 e2 e3
现在我的问题是,当两个文件中的一列完全相同时,我知道如何合并两个 CSV 文件。但我的问题有点不同。 CSV1 的第 4 列可以包含 CSV2 的第 2 列。我想得到一个如下的 CSV 文件
FINAL_CSV
id1 main_data1 a1 a2 a3 data13
id2 main_data2 b1 b2 b3 data3
id3 main_data3 c1 c2 c3 main_data3
id4 main_data4 d1 d2 d3 data7
id5 main_data5 e1 e2 e3
where:
1.它匹配两列中的数据,并从第一次出现时获取相应的行并写入 csv 文件。
2. 如果不匹配,它可以将 FINAL_CSV 中的最后一列留空或写入“NA”或类似的任何内容。
3. 当 CSV1 的第 4 列和第 5 列中的数据完全匹配时,它返回该行而不是第一次出现。
我完全不知道如何做到这一点。帮助它的一部分也很好。任何建议都非常感谢。
PS- 我知道 csv 文件中的数据应该用逗号分隔,但为了清楚起见,我更喜欢制表符,尽管实际数据用逗号分隔。
编辑:实际上,'main_data' 可以在 CSV2 的任何列中,而不仅仅是在 column2 中。相同的“main_data”也可以在多行中重复,然后我想获取所有相应的行。
【问题讨论】:
-
你能澄清一下加入条件吗?例如main_data1 包含在多行 CSV1 中,但输出只包含一次
-
抱歉,没有仔细阅读,仅第一次出现
-
这必须在 python 中吗?
-
@Jidder 是的,因为这是我唯一熟悉的语言,R 也很好。但是您还有什么建议?
-
@amy 如果是在 unix 系统上,那么我可以在
awk中提出解决方案
标签: python regex csv merge two-columns