2016-11-13 123 views
0

我正在使用csv表单(movielens latest-small dataset)中的两个数据集。以下是两者的领域。Excel - 将两个csv文件合并为一个具有公共列的文件

rating.csv

user_id movie_id rating 

movie.csv

movie_id movie_name 

我要的是将其与以下领域

user_id movie_id movie_name rating 

合并成一个单一的.csv从而使公用列movie_id映射与相应的movie_name

这可以使用Excel来完成吗?如果不是,我该怎么做?

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

如果有某种方式使用Excel,那么这将是最好的。我尝试在网上搜索,发现一些VLOOKUP方法,但无法清楚地得到它。

此外,我尝试了一些在线合并工具,但他们只是附加一张纸,一张接着一张没有映射列。所以我也没有问题使用在线工具。

+0

因为是代表你的问题是有点“过于宽泛” - 你可以请更新你的问题,以表明*你是如何做到这一点合并例如在Excel中使用公式;与VBA;与其他语言/框架? –

+0

那么你的推荐引擎是用Java编写的吗?如果您要使用.Net,则可以使用LINQ运行将它们结合使用的查询,并在内存中使用该数据集。虽然我不确定Java的等价物。 –

+0

是的,它在java中。但是奇怪的是,使用Excel或在线工具无法做到这一点。我认为这是一个不需要任何脚本的例行操作。可以结合两个csv如此复杂吗? – techvigil

回答

0

看看这个工具 - https://github.com/DataFoxCo/gocsv - 它基于csvkit,但有很多附加功能。我们的工程师定制它的一个 - 和开源了它来帮助解决一些我们每天处理这些数据的问题:)

它将仅仅秒做一个VLOOKUP基本上任何规模的CSV的使用join命令:

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

1

这是一个VLOOKUP式方法在Excel:

enter image description here

该公式需要4个参数:

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

参见here用于在函数文档。

相关问题