2015-05-16 23 views
22

Ho provato a passare il parametro dtype con read_csv come dtype={n: pandas.Categorical} ma questo non funziona correttamente (il risultato è un oggetto). The manual is unclear.È possibile leggere le colonne categoriali con i read_csv dei panda?

+1

È una colonna categoriale o siete tutti? – wegry

+1

Uno o più, ma non tutti. – Emre

+0

È una stringa nello snippet di codice (probabilmente dovrebbe). Suggerirò di usare il metodo astype sulle singole colonne altrimenti. – wegry

risposta

15

Nella versione 0.19.0 è possibile utilizzare il parametro dtype='category' in read_csv:

data = 'col1,col2,col3\na,b,1\na,b,2\nc,d,3' 
df = pd.read_csv(StringIO(data), dtype='category') 
print (df) 

    col1 col2 col3 
0 a b  1 
1 a b  2 
2 c d  3 

print (df.dtypes) 
col1 category 
col2 category 
col3 category 
dtype: object 
+2

Penso di sì, usare 'df = pd.read_csv (StringIO (data), dtype = {'col1': ' category '}, index_col =' col1 ') ' – jezrael

3

Categorico non valido dtype.

Questo StackOverflow post contiene dettagli su come memorizzare dati categoriali in un file di testo.

+0

1. Il post utilizza il dtype categoriale 2. L'articolo collegato parla del dtype "categoria", ma non sono riuscito a utilizzarlo con read_csv. Hai? – Emre

+0

vedere [panda # 10153] (https://github.com/pydata/pandas/issues/10153) – deck