最佳答案
我将以下 CSV 文件输入到 iPython Notebook 中:
public = pd.read_csv("categories.csv")
public
我还将熊猫导入为 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')
尽管如此,我不想创建一个单独的数据框架,只有类别列。我希望他们改变在原来的数据框架。
我尝试了许多方法来实现这一点,然后尝试这里的代码: 熊猫: 更改列的数据类型..。
public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')
得到如下错误:
NotImplementedError: > 1 ndim Categorical are not supported at this time
有没有办法把“公园”、“游乐场”、“体育”、“道路”改成类别(这样就可以分析李克特量表的反应) ,而不去碰“居民”和“儿童”(以及其他94个字符串、 int + float) ?还有更好的办法吗?如果任何人有任何建议和/或反馈,我将非常感激... ... 我正在慢慢变成秃头,扯掉我的头发!
非常感谢。
编辑添加-我正在使用 Python 2.7。