2016-03-25 31 views
0

我有以下結構一個非常大的CSV文件:如何做到這一點的數據轉換最有效

user_id,mail_id,action 
1,100,sent 
1,100,opened 
1,100,clicked 
2,100,sent 
2,101,sent 

我要重新格式化它來創建一個爲每種user_ID的一排新的CSV文件,每個mail_id有1列。如果原始表中沒有相應的行,則每個單元格中的值應該爲空。否則,它將具有與該用戶和mail_id相對應的最新操作(點擊後打開,發送後)。

最終的產品(假設上面的小數據表)應該是這樣的:

user_id,100,101 
1,clicked,NULL 
2,sent,sent 

該數據操作相當簡單,但原來的CSV是相當長的,和我期待的訣竅,以及最有效地做到這一點。

+0

CSV是否已排序? – mwm314

+0

是的,它是排序的。我可以很容易地按任何列(或列的組合)對它進行排序。 – user3658457

回答

0

無論用於讀取數據的方法如何,將數據讀入某些結構的時間複雜度爲m行n列的O(m * n)。最簡單的方法是將數據讀入詞典字典{user_id: {100: most_recent_action,101: None}...},使用csv.read,然後迭代字典詞典輸出到一些帶有csv.write的csv字典。

相關問題