【问题标题】:Combine multiple csv file along column沿列合并多个 csv 文件
【发布时间】:2022-01-21 04:06:20
【问题描述】:

我需要沿列合并多个 .CSV 文件。我尝试在excel中使用电源查询功能,但只能在下面的行中添加,但我想在列侧添加。

【问题讨论】:

  • A minimal reproducible example 会有很大帮助(至少是玩具数据和预期结果),以及您尝试的“许多方法”的描述。
  • 你所说的“沿列”是什么意思,比如在彼此“下方”添加 CSV?
  • 我的意思是,制作一个 CSV 或 Excel 文件,其中所有数据都添加到右侧。
  • 听起来像我推荐的命令行实用程序的 zip 命令对你有用。

标签: csv merge


【解决方案1】:

命令行工具 GoCSV 有许多用于组合多个 CSV 的命令。

我认为可能对您有所帮助的两个是 stack 将 CSV 相互叠加,zip 并排添加 CSV。

堆栈

对于这两个输入 CSV:

input1.csv     input2.csv
  H1,H2          H1,H2
   A, 1           C, 3
   B, 2           D, 4

当我运行gocsv stack input1.csv input2.csv 时,它会写入 input1.csv,然后将 input2.csv 作为其下方的新行,丢弃来自 input2 的标题:

H1,H2
 A, 1
 B, 2
 C, 3
 D, 4

标题必须与所有输入文件匹配,stack 才能工作。

压缩

对于这两个输入 CSV:

input1.csv     input2.csv
  H1,H2          H3,H4
   A, 1           C, 3 
   B, 2           D, 4 
                  E, 5 

当我运行gocsv zip input1.csv input2.csv 时,它会写入 input1.csv,然后将 input2.csv 作为新列写入右侧。列可以不同,行数也可以不同:

H1,H2,H3,H4
 A, 1, C, 3
 B, 2, D, 4
  ,  , E, 5

加入

它还有一个join 命令,可以通过key 列匹配来自不同CSV 的行。

在下面的示例中,我想将罗马数字连接到十进制数字,并且我将使用第一列作为匹配两个输入的键:

input1.csv     input2.csv
  H1, H2         H1,  H2
   A,  1          C, III 
   B,  2          B,  II 
   C,  3          A,   I

当我运行 gocsv join -c H1 input1.csv input2.csv 时,它会通过 H1 列中的大写字母匹配两个文件中的每一行。它还重新排列了 input2 中的行以匹配 input1 中的行的顺序:

H1, H2, H1,  H2
 A,  1,  A,   I
 B,  2,  B,  II
 C,  3,  C, III

它有许多预编译的二进制文件。您可以检查您的操作系统,下载并试一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2012-11-16
    • 2019-10-11
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多