私はマージする必要がある2 csvファイルを持っているを使用して2つの大部分は不均等なファイルをマージ、ファイル1は約20gb
であり、他は~1000
ラインを持っています。そのため、大きなサイズの私は、最初のパンダパンダやawkの
File1:
大きなファイルは、以下の通りであるを使用してマージ/ロードより大きなファイルを反復して、(たとえばFILE1)小さいファイルに大きなファイルをフィルタリングしたい
col1,col2,col3
1,1,1491795901021327897
1,2,1491795901021342873
1,3,1491795901021347247
1,4,1491795901021351620
1,5,1491795901021356612
1,6,1491795901021361172
1,7,1491795901021366797
小さいファイルは、私が10*10**10(value at col1) + val at col2
をすることによって、同様col4,5を使用して小さなファイルに両方のファイルから単一のキーを作成することでしたやった
col1,col2,col3,col4,col5,col6
val1,val2,val3,1,6,1412414141412414
val1,val2,val3,1,3,1434252352352325
一つの方法以下の通りです。この値をリストとして保存し、値がリストに存在する場合は行ごとに大きな行にその行を出力します。最終的に小さなフィルタリングされたファイルが印刷されます。 Pythonやawkを使ってこれを行うより良い方法がありますか?
究極の目的は、マージすることですが、20ギガバイトはパンダにロードすることはできませんので、私は私のファイルをフィルタリングし、それが小さくなっています。私はこれに接近するより良い方法がなければならないと確信しています。
予想される出力を貼り付けてください。 –
マージの一般的なキーは何ですか?投稿されたデータを使用した例とマージされたファイルの構造は何ですか? '4,5 '番目のフィールドを' 1,2'にマッチさせて、小さなファイルに基づいて大きなファイルをフィルタリングしていますか? – karakfa
は 'あなたは1,2に4,5thフィールドを照合することによって、小さなファイルに基づいて、大きなファイルをフィルタリングしていますか? 'はい正確に – pythonRcpp