posso convertire una colonna stringa di panda a categoriale, ma quando cerco di inserirlo come nuova colonna dataframe sembra convertirsi destra di nuovo serie di str:Come generare la colonna DataFrame dei pandi di Categorical dalla colonna di stringhe?
train['LocationNFactor'] = pd.Categorical.from_array(train['LocationNormalized'])
>>> type(pd.Categorical.from_array(train['LocationNormalized']))
<class 'pandas.core.categorical.Categorical'>
# however it got converted back to...
>>> type(train['LocationNFactor'][2])
<type 'str'>
>>> train['LocationNFactor'][2]
'Hampshire'
indovinare questo è perché categoriale doesn' t mappare su qualsiasi tipo di carattere numerico; così devo convertirlo in un tipo int, e quindi perdere le etichette dei fattori < -> livelli di associazione? Qual è la soluzione più elegante per archiviare i livelli < -> associazione etichette e mantenere la capacità di riconvertire? (Solo memorizzare come dict come here, e manualmente la conversione in caso di necessità?) Penso Categorical is still not a first-class datatype for DataFrame, a differenza di R.
(Usando panda 0.10.1, NumPy 1.6.2, Python 2.7.3 - le più recenti versioni di macports qualunque cosa).
Lo so, ma il problema qui è che tutto viene fatto saltare di nuovo a str quando assegniamo a una colonna dataframe, come ho mostrato: 'treno [ 'LocationNFactor' ] = pd.Categorical ... ' – smci