2017-11-29 13 views
2

が、私はここでformat-CSVへの追加欠損値は

X,Y 
0,0 
0,1 
0,2 
1,0 
1,1 
2,0 
2,1 
2,1 

以下でソートCSVファイルを持って、値1,2が存在しないファイル。これは単なるサンプルであり、私のファイルには何百万ものレコードが含まれています。これらの値を検出してファイルに追加するスクリプトを作成するにはどうすればよいですか?

は、私はすべての可能なペアを生成しようと、彼らはファイルかどうかに存在しているかどうかを確認、しかしあまりにも遅いですしている

import csv 

with open('myfile.csv') as csvfile: 
r = csv.reader(csvfile, delimiter=',') 

for row in r: 

    for i in range(1000): 
     for j in range(1000): 
      if (int(row[0]) == i and int(row[1]) == j): 
       # Can perform operations here 

私はnumpyのか、パンダを使用することができますいくつかの方法は、(私はあります非常にそれらの新しい)この問題を解決するには?セットを使用して

+1

が、それはいくつかの学術的な理由のためですか?それ以外の場合は、すべての可能なペアを生成し、欠落をチェックするのではなく、ファイルに書き込むだけです。 –

+0

実際には、レコードごとにカウント値を持つ列が追加されています。 – amadispstac

答えて

3

一つの方法:

from intertools import product 
import pandas as pd 

df1 = pd.read_csv('myfile.csv') 

set(product(df1.X.unique(), df1.Y.unique())).difference(set((i[1], i[2]) for i in df1.itertuples())) 

出力:

{(1, 2), (2, 2)} 
+0

私の答えはテストされていません。それをチェックしていただきありがとうございます。 (削除されました) –

+0

@amadispstacこのソリューションがあなたに[accepting](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes#tab-トップ)それ。 –

+1

通知が私に来ました。質問の下でコメントするのがベスト。 –