2016-03-25 46 views
0

このデータ変換を行うにはどうすればよい:私は次のような構造を持つ1つの本当に大きなCSVファイルを持っている最も効率的

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

私はそれぞれのuser_idに1つの行を持つ新しい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に出力します。

関連する問題