我已将以下CSV文件输入到iPython Notebook:
public = pd.read_csv("categories.csv")
public
我也将pdas导入为pd,将numpy导入为np,将matplotlib.pyplot导入为plt。 存在以下数据类型(以下是摘要-大约有100列)
In [36]: public.dtypes
Out[37]: parks object
playgrounds object
sports object
roading object
resident int64
children int64
我想将“公园”,“运动场”,“运动”和“道路”更改为类别(它们具有李克特量表响应-尽管每一列都有不同类型的李克特响应(例如,一个人“强烈同意”,“同意” 等),另一个具有“非常重要”,“重要”等),其余部分保留为int64。
我能够创建一个单独的数据框public1,并使用以下代码将其中一列更改为类别类型:
public1 = {'parks': public.parks}
public1 = public1['parks'].astype('category')
但是,当我尝试使用此代码一次更改数字时,我没有成功:
public1 = {'parks': public.parks,
'playgrounds': public.parks}
public1 = public1['parks', 'playgrounds'].astype('category')
尽管如此,我不想仅使用类别列创建单独的数据框。 我希望它们在原始数据框中更改。
我尝试了多种方法来实现这一目标,然后在此处尝试了以下代码:Pandas:更改列的数据类型...
public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')
并得到以下错误:
NotImplementedError: > 1 ndim Categorical are not supported at this time
有没有一种方法可以将“公园”,“游乐场”,“运动”,“道路”更改为类别(这样就可以分析李克特量表的响应),剩下“居民”和“孩子”(以及其他94列 是字符串,整数+浮点数)吗? 还是有更好的方法来做到这一点? 如果有人有任何建议和/或反馈,我将不胜感激..am慢慢地秃头撕开我的头发!
提前谢谢了。
编辑添加-我正在使用Python 2.7。