2016-03-24 16 views
6

cercando di leggere csv file in panda dataframe con la formattazioneImpostazione tipi di colonna durante la lettura csv con i panda

dp = pd.read_csv('products.csv', header = 0, dtype = {'name': str,'review': str, 
                 'rating': int,'word_count': dict}, engine = 'c') 
print dp.shape 
for col in dp.columns: 
    print 'column', col,':', type(col[0]) 
print type(dp['rating'][0]) 
dp.head(3) 

Questo il seguente è l'output:

(183531, 4) 
column name : <type 'str'> 
column review : <type 'str'> 
column rating : <type 'str'> 
column word_count : <type 'str'> 
<type 'numpy.int64'> 

enter image description here

Posso capire che panda potrebbe essere difficile trovare una rappresentazione di stringa di un dizionario in un dizionario dato this e this. Ma come può il contenuto della colonna "valutazione" essere sia str che numpy.int64 ???

A proposito, le modifiche come non specificare un motore o un'intestazione non cambiano nulla.

Grazie e saluti

risposta

1

Basta fare:

for col in dp.columns: 
    print 'column', col,':', col[0] 

e vedrete che si stampa la prima lettera di ogni nome di colonna, che è una stringa. Fai attenzione a iterare qui sul nome della colonna, non su ogni Serie.

Che cosa si vuole è quello di verificare il tipo di ogni colonna attraverso un ciclo in modo piuttosto fare:

for col in dp.columns: 
    print 'column', col,':', type(dp[col][0]) 

... come avete fatto per il rating della colonna !!

+0

Grazie, è stata una scivolata da parte mia :) Scelgo questa come risposta accettata perché è una risposta diretta alla mia domanda. – user2738815

+0

Immagino sia stato un errore di battitura, a volte difficile da rilevare se focalizzato sul codice;) –

1

penso che si dovrebbe controllare questo prima: Pandas: change data type of columns

quando Google pandas dataframe column type, è sui primi 5 risposte.

+0

Grazie, è utile. Vorrei che ci fosse anche una discussione su come forzare la conversione in tipo dict (se ce n'è uno). – user2738815

1

Usa:

dp.info() 

per vedere i tipi di dati delle colonne. dp.columns fa riferimento ai nomi delle intestazioni di colonna, che sono stringhe.

+0

Un'altra scorciatoia che ho perso nella documentazione panda molto densa - grazie. – user2738815