2017-11-29 2 views
2

Ich habe eine Format- in folgenden CSV-Datei sortiertAnfügen fehlende Werte in eine CSV-Datei

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

Hier wird ein Wert 1,2 fehlt. Dies ist nur ein Beispiel, meine Datei enthält 1 Million Datensätze mit ein paar Tausend abwesend. Wie kann ich ein Skript schreiben, um diese Werte zu erkennen und an die Datei anzuhängen?

Ich habe versucht, alle möglichen Paare zu erzeugen und prüfen, ob sie in der Datei vorhanden sind oder nicht, ist aber viel zu langsam-

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 

Gibt es irgendeine Weise, die ich Numpy oder Pandas können (ich bin sehr neu, um dieses Problem zu lösen?

+1

Ist es für einige wissenschaftliche Gründe? Ansonsten, warum nicht einfach alle möglichen Paare generieren und in die Datei schreiben, anstatt nach fehlenden zu suchen? –

+0

Tatsächlich gibt es eine zusätzliche Spalte mit einem Zählwert für jeden Datensatz. – amadispstac

Antwort

3

Eine Möglichkeit, mit den Sätzen:

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())) 

Ausgang:

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

Meine Antwort wurde nicht getestet. Danke, dass Sie es überprüft haben. (Gelöscht) –

+0

@amadispstac Wenn diese Lösung Ihnen geholfen hat, würden Sie in Betracht ziehen, [akzeptieren] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes#tab- oben) es. –

+1

Die Benachrichtigung kam zu mir. Am besten, unter der Frage zu kommentieren. –