我可以将熊猫字符串列转换为分类,但是当我尝试将其作为新的 DataFrame 列插入时,它似乎立即转换回 str 系列:
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'
猜测这是因为 Categorical 没有映射到任何 numpy dtype;那么我是否必须将其转换为某种 int 类型,从而失去因子标签<->级别关联?存储级别<->标签关联并保留转换回来的能力的最优雅的解决方法是什么?(只需像这里一样存储为 dict ,并在需要时手动转换?)我认为Categorical 仍然不是 DataFrame 的一流数据类型,与 R 不同。
(使用 pandas 0.10.1、numpy 1.6.2、python 2.7.3 - 一切的最新 macports 版本)。