Ich kann eine Pandas String-Spalte zu kategorischen, konvertieren, aber wenn ich versuche, es als eine neue Dataframe Spalte einzufügen scheint es gleich wieder zu der Serie von str umgewandelt werden:Wie Pandas DataFrame-Spalte von Categorical von String-Spalte zu generieren?
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'
Erraten ist dies, weil kategorische ‚doesn t Zu jedem numpy dtype mappen; also muss ich es in einen int-typ konvertieren, und damit die faktor labels < verlieren -> levels association? Was ist die eleganteste Problemumgehung zum Speichern der Ebenen < -> Etiketten Assoziation und behalten die Fähigkeit, zurück zu konvertieren? (Speichert nur als dict wie here und manuell konvertieren, wenn erforderlich?) ich Categorical is still not a first-class datatype for DataFrame denken, im Gegensatz zu R.
(mit Pandas 0.10.1, numpy 1.6.2, Python 2.7.3 - die neuesten Versionen von Macports alles).
Ich weiß, dass, aber das Problem hier ist alles zurück auf str gestrahlt wird, wenn wir zu einer Dataframe Spalte zuweisen, wie ich zeigte: 'Zug [‚LocationNFactor‘ ] = pd.Categorical ... ' – smci