【问题标题】:Excel - combining two csv files into one with a common columnExcel - 将两个 csv 文件合并为一个具有公共列的文件
【发布时间】:2016-11-13 10:35:20
【问题描述】:

我正在使用csv 形式的两个数据集(movielens latest-small dataset)。下面给出了两者的字段。

评分.csv

  user_id   movie_id  rating

电影.csv

  movie_id   movie_name

我想要将它们组合成一个带有以下字段的单个 .csv

user_id   movie_id   movie_name   rating

因此公共列movie_id 与对应的movie_name 映射。

这可以使用 Excel 完成吗?如果没有,我该怎么办?

我只需要它作为我的 recommender 引擎的数据集,因此欢迎任何简单的解决方案,因为最终结果才是最重要的。但是由于我有一些java经验,所以这对我来说很容易理解和实现。

如果有某种方法可以使用 Excel,那将是最好的。我曾尝试在线搜索并找到了一些VLOOKUP 方法,但无法清楚地得到它。

我还尝试了一些在线合并工具,但他们只是一张接一张地附加表格,而不是映射列。所以我使用在线工具也没有问题。

【问题讨论】:

  • 就目前而言,您的问题有点“过于宽泛” - 您能否更新您的问题以说明 如何 您正在尝试进行此合并,例如在 Excel 中使用公式;使用 VBA;使用其他语言/框架?
  • 那么您的推荐引擎会用 Java 编写吗?如果您要使用 .Net,则可以使用 LINQ 运行将它们结合起来的查询,并在内存中使用该数据集。不过,我不确定 Java 中的等价物。
  • 是的,它在 java 中。但让我感到奇怪的是,这不能用excel或在线工具来完成。我认为这是一个不需要任何脚本的例行操作。合并两个csv可以这么复杂吗?
  • @techvigil - 使用 VLOOKUP 公式,然后一次性保存为 csv - 查看我的答案

标签: excel csv excel-formula


【解决方案1】:

这是在 Excel 中使用VLOOKUP 公式的方法:

公式有 4 个参数:

  1. 您要查找的值
  2. 您正在查看的数据范围
  3. (2) 中包含您想要的答案的列
  4. 是否在 (1) 上近似匹配,即 FALSE = 完全匹配

有关该函数的文档,请参阅 here

【讨论】:

    【解决方案2】:

    查看此工具 - https://github.com/DataFoxCo/gocsv - 它基于 csvkit,但具有大量附加功能。我们的一位工程师定制了它 - 并将其开源以帮助解决我们每天处理的一些数据问题:)

    它会在几秒钟内使用 join 命令对任何大小的 csv 进行 vlookup:

    gocsv join --columns 'movie_id','movie_id' --left rating.csv movie.csv > combineddata.csv

    如果您仍想重新排序列,您也可以这样做:

    gocsv select --columns 'user_id','movie_id','movie_name','rating' combineddata.csv > combineddata-final.csv

    我将命令拆分为顶部以帮助解释它的使用 - 文档中也包含所有示例,但最终我真的建议将其流水线化并在一个命令中执行,如下所示:

    cat rating.csv \ | gocsv join --left --columns 'movie_id','movie_id' movie.csv \ | gocsv select --columns 'user_id','movie_id','movie_name','rating' > combineddata.csv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 2016-06-29
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多