2016-05-06 6 views
2

mit habe ich eine CSV-Datei mit Daten, Infos wie Ländern (die nur die Werte innerhalb einer vordefinierten Liste nehmen), und ich bin derzeit mit dem Wandler Parameter einige Integritätsprüfungen zu machen, wie unten:Get Reihe der Fehler beim Wandler mit read_csv

import pandas as pd 

def datesCheck(x): 
    #do some checks and return the formated date 
    pass 

def countriesCheck(x): 
    if x in countriesList: 
     return x 
    else: 
    raise ValueError, x + ' is not a recognised country' 

df = pd.read_csv('myCsvFile.csv', converters={'Dates': datesCheck, 'Countries': countriesCheck}) 

Was ich frage mich, wenn es eine Möglichkeit ist, die Anzahl der Zeile zu erhalten, die (oder ersten) wirft ein Valueerror wenn überhaupt, so kann ich öffnen die CSV-Datei und ändern Sie es schnell.

Vielen Dank für Ihre Hilfe. Schönes Wochenende!

Antwort

0

eine Zählervariable einführen und die Zeilen zählen und die Zeile verursacht Fehler aus:

import pandas as pd 

current_row = 0 

def datesCheck(x): 
    current_row += 1 
    #do some checks and return the formated date 
    # if date ok do nothing 
    # else raise ValueError, 'Error Row = ' + str(current_row) 
    pass 

def countriesCheck(x): 
    if x in countriesList: 
     return x 
    else: 
    raise ValueError, x + ' is not a recognised country in row = ' + str(current_row) 

df = pd.read_csv('myCsvFile.csv', converters={'Dates': datesCheck, 'Countries': countriesCheck}) 
+0

Danke. Ich habe mich gefragt, ob es einen besseren Weg gibt, denn mit dieser Logik brauche ich eine Zählervariable für jede Spalte. Ich würde vermuten, dass der Algorithmus hinter Konvertern die Zeilen-Info hat ... – soso23

+0

Eine andere Möglichkeit ist, welcher Zeilenspaltenwert nicht analysiert wurde, einen Standardwert festlegen oder als NaN festlegen und nach dem Lesen für alle NaN-Werte filtern und erhalten Sie den entsprechenden Index und das ist die Zeile + 1 in der CSV-Datei. – Abbas

+0

Klingt nach einer sehr guten Idee! Auf diese Weise kann ich einen Fehler mit allen Zeilen erzeugen, die gleichzeitig inkonsistent sind. Vielen Dank. – soso23

Verwandte Themen