2017-09-19 14 views
0

私は2つのCSVを持っています。それぞれは、約1M行、n個の列と、同じ列を持っています。私は、2つのファイルを比較してどのような違いがあるのか​​を見つける最も効率的な方法を望んでいます。私は、エクセル関連のツールを使用するのではなく、このデータをPythonで解析する方が好きです。Pythonで2つのほぼ同じCSVを比較する最も効率的な方法は?

+1

サンプルコードと入力ファイルから数行を追加してください。 –

答えて

2

パンダを使用していますか?

import pandas as pd 
df = pd.read_csv('file1.csv') 
df = df.append(pd.read_csv('file2.csv'), ignore_index=True) 

# array indicating which rows are duplicated 
df[df.duplicated()] 

# dataframe with only unique rows 
df[~df.duplicated()] 

# dataframe with only duplicate rows 
df[df.duplicated()] 

# number of duplicate rows present 
df.duplicated().sum() 
+0

pandasは大文字の文字列を自動的に処理しますか?それとも最初に処理する必要がありますか?例えば'ジョン'対 'ジョン'。 –

+0

自動的に処理します。それは 'ジョン'が 'ジョン'と等しいとは見えません。それが問題であれば、 'df ['column_name'] = df ['column_name']。str.lower()'を使ってすべての文字列値を小文字にすることができます。 –

+0

これはすばらしいことです。ありがとうございました!私はパンダの図書館についていくつか調査します! –

1

効率的な方法は、(行数が少ない)最初のファイルから各行を読み取り、O(1)の複雑さを使用してアクセスできるSetまたはDictionaryのようなオブジェクトに保存することです。

次に、2番目のファイルから行を読み込んで、それがセットに存在するかどうかを確認します。

+0

ありがとうございます。私は実際には実際の解決策を探していましたが、これは効率的にする方法について正しい答えがあることを理解していますので、私はupvoteと応答したいと思いました。ありがとうございました! –

関連する問題