python - 按列追加 csv 文件

标签 python bash sed awk append

我正在尝试合并多个 CSV 文件,其配置如下:

File1

DATE;BS-ICI,NSA,BAL,AT;BS-ICI,NSA,BAL,BE;
2014M02;0.9;1.5;
2014M01;-5.4;-4.4;
2013M11;-7.9;-9.2;
2013M10;-8.6;-14.0;


File2

DATE;BS-BYL,NSA,BAL,AT;BS-NAN,NSA,BAL,BE;
2014M02;1.5;6.7;
2014M01;-8.8;-4.4;
2013M11;-2.5;-9.6;
2013M10;-8.9;-11.4;

我想按列合并它们,保留 File1 的第一列,但删除 File2 的第二列。所需的输出将是:

DATE;BS-ICI,NSA,BAL,AT;BS-ICI,NSA,BAL,BE;BS-BYL,NSA,BAL,AT;BS-NAN,NSA,BAL,BE;
2014M02;0.9;1.5;0.9;1.5;
2014M01;-5.4;-4.4;-5.4;-4.4;
2013M11;-7.9;-9.2;-2.5;-9.6;
2013M10;-8.6;-14.0;-8.9;-11.4;

我正在考虑使用sed,但我不熟悉其用法,尤其是在列中。我认为命令粘贴,但我找不到任何与我想要做的事情相关的内容。

欢迎任何建议。

最好。

最佳答案

使用加入命令:

$ join -t\; -j 1 file1 file2 | sed 's/;;/;/g'
DATE;BS-ICI,NSA,BAL,AT;BS-ICI,NSA,BAL,BE;BS-BYL,NSA,BAL,AT;BS-NAN,NSA,BAL,BE;
2014M02;0.9;1.5;1.5;6.7;
2014M01;-5.4;-4.4;-8.8;-4.4;
2013M11;-7.9;-9.2;-2.5;-9.6;
2013M10;-8.6;-14.0;-8.9;-11.4;

或者,如果您不想通过管道传输到 sed,您可以通过设置输出格式来实现(更详细一点):

$ join -t\; -j 1 -o 1.1 1.2 1.3 2.2 2.3 2.4 file1 file2 
DATE;BS-ICI,NSA,BAL,AT;BS-ICI,NSA,BAL,BE;BS-BYL,NSA,BAL,AT;BS-NAN,NSA,BAL,BE;
2014M02;0.9;1.5;1.5;6.7;
2014M01;-5.4;-4.4;-8.8;-4.4;
2013M11;-7.9;-9.2;-2.5;-9.6;
2013M10;-8.6;-14.0;-8.9;-11.4;

关于python - 按列追加 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693260/

相关文章:

Python循环遍历CSV文件及其列

python - 最后的输出在无限循环上运行 - Python

Python 检查整数输入

sed - 使用sed以树结构打印文本行

linux - 在 HTML 标签中匹配模式和替换

python - HTTP 301重定向url编码问题

bash - {1} 在 |master {1} 中是什么意思 ✓|与 bashit?

bash - 如果文件不为空,我该如何编写一个 shell 脚本,通过电子邮件将文件发送给我?

linux - 分割逗号集文件

linux - 从制表符分隔的表中提取文本子字符串