2016-11-13 134 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用於在函數文檔。

相關問題