2016-04-27 12 views
5

sto cercando in un file CSV 2 colonne (error.csv) con separatore semi-colonna che contiene doppi citati semicolonne:panda pitone read_csv in grado di leggere caratteri a doppio citato due volte

col1;col2 
2016-04-17_22:34:25.126;"Linux; Android" 
2016-04-17_22:34:25.260;"{"g":2}iPhone; iPhone" 

And I sto cercando:

logs = pd.read_csv('error.csv', na_values="null", sep=';', 
        quotechar='"', quoting=0) 

ho capito che il problema viene da avere un doppio citato 'g' dentro i miei virgolette doppie in linea 3, ma io non riesco a capire come trattare con essa. Qualche idea ?

+1

Vorrei solo lasciarlo analizzare con le doppie virgolette e quindi strapparle manualmente lungo la seconda colonna. Penso che questo sia in realtà più bello e più veloce della pre-elaborazione del file da solo. –

risposta

1

Probabilmente sarà necessario pre-elaborare i dati in modo che siano conformi al formato CSV previsto. Dubito che lo pandas gestirà questo semplicemente cambiando un parametro o due.

Se ci sono solo due colonne, e il primo non contiene un punto e virgola, allora si potrebbe dividere le linee sul primo punto e virgola:

records = [] 
with open('error.csv', 'r') as fh: 
    # first row is a header 
    header = next(fh).strip().split(';') 

    for rec in fh: 
     # split only on the first semi-colon 
     date, dat = rec.strip().split(';', maxsplit=1) 
     # assemble records, removing quotes from the second column 
     records.append((date, dat.strip('"'))) 

# create a data frame 
df = pandas.DataFrame.from_records(records, columns=header) 

Si dovrà analizzare manualmente le date da soli con il modulo datetime se si desidera che la prima colonna contenga date corrette e non stringhe.

+0

Per analizzare le date, se l'inferenza di pda non funziona, utilizzare qualcosa come: 'pd.read_csv ('error.csv', date_parser = lambda x: datetime.datetime.strptime (x, ''% Y-% m-% d_% H:% M:% S.% f ")'. Vedere [questa tabella] (https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior) per formato esatto. –

Problemi correlati