gpt4 book ai didi

Python Pandas - 将某些列类型更改为类别

转载 作者:IT老高 更新时间:2023-10-28 21:40:49 27 4
gpt4 key购买 nike

我已将以下 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

我想将“公园”、“ Playground ”、“运动”和“道路”更改为类别(它们中有李克特量表响应 - 但每列都有不同类型的李克特响应(例如,一个“非常同意” ,“同意”等,另一个有“非常重要”,“重要”等),其余为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: 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

有没有办法将“公园”、“ Playground ”、“运动”、“道路”更改为类别(以便分析李克特量表响应),留下“居民”和“ child ”(以及 94其他列是字符串,int + floats)请保持不变?或者,有没有更好的方法来做到这一点?如果有人有任何建议和/或反馈,我将不胜感激....我的头发慢慢秃了!

非常感谢。

已编辑添加 - 我使用的是 Python 2.7。

最佳答案

有时,您只需要使用 for 循环:

for col in ['parks', 'playgrounds', 'sports', 'roading']:
public[col] = public[col].astype('category')

关于Python Pandas - 将某些列类型更改为类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28910851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com