我已将以下 CSV 文件输入到 iPython Notebook 中:
public = pd.read_csv("categories.csv")
public
我还将 pandas 导入为 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 中的列类型 https://stackoverflow.com/questions/15891038/pandas-change-data-type-of-columns...
public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')
并得到以下错误:
NotImplementedError: > 1 ndim Categorical are not supported at this time
有没有办法将“公园”、“游乐场”、“体育”、“道路”更改为类别(以便可以分析李克特量表响应),留下“居民”和“儿童”(以及其他 94 个列) string、int + float)是否未受影响?
我正在使用Python 2.7。