web-dev-qa-db-fra.com

Pandas read_csv de dataframe sur des données incorrectes

Je veux lire dans un très gros csv (ne peut pas être ouvert dans Excel et édité facilement), mais quelque part autour de la 100 000e rangée, il y a une rangée avec une colonne supplémentaire provoquant le blocage du programme. Cette ligne est erronée, j'ai donc besoin d'un moyen d'ignorer le fait qu'il s'agissait d'une colonne supplémentaire. Il y a environ 50 colonnes, il est donc préférable de coder en dur les en-têtes et d'utiliser des noms ou des usecols. Je vais peut-être aussi rencontrer ce problème dans d'autres CSV et vouloir une solution générique. Malheureusement, je n'ai rien trouvé dans read_csv. Le code est aussi simple que cela:

def loadCSV(filePath):
    dataframe = pd.read_csv(filePath, index_col=False, encoding='iso-8859-1', nrows=1000)
    datakeys = dataframe.keys();
    return dataframe, datakeys
44
Fonti

passer error_bad_lines=False pour ignorer les lignes erronées:

error_bad_lines: boolean, True True par défaut avec trop de champs (par exemple, une ligne CSV avec trop de virgules) provoquera par défaut une exception et aucune DataFrame ne sera retournée. Si la valeur est False, ces "lignes incorrectes" seront supprimées du DataFrame renvoyé. (Valable uniquement avec l'analyseur C)

73
EdChum