首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas -创建列数据类型对象或因子

Pandas -创建列数据类型对象或因子
EN

Stack Overflow用户
提问于 2013-03-31 05:21:57
回答 3查看 94.8K关注 0票数 60

在pandas中,如何将DataFrame的列转换为dtype对象?或者更好的是,成为一个因素?(对于那些使用Python语言使用R的人来说,如何使用as.factor()?)

另外,pandas.Factorpandas.Categorical之间的区别是什么

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-31 05:54:21

您可以使用astype方法转换序列(单列):

代码语言:javascript
运行
复制
df['col_name'] = df['col_name'].astype(object)

或者整个DataFrame:

代码语言:javascript
运行
复制
df = df.astype(object)

更新

系列/列中的Since version 0.15, you can use the category datatype

代码语言:javascript
运行
复制
df['col_name'] = df['col_name'].astype('category')

注意:pd.Factor已被弃用,并已被移除以支持pd.Categorical__。

票数 81
EN

Stack Overflow用户

发布于 2013-11-18 23:35:08

还可以使用pd.factorize函数:

代码语言:javascript
运行
复制
# use the df data from @herrfz

In [150]: pd.factorize(df.b)
Out[150]: (array([0, 1, 0, 1, 2]), array(['yes', 'no', 'absent'], dtype=object))
In [152]: df['c'] = pd.factorize(df.b)[0]

In [153]: df
Out[153]: 
   a       b  c
0  1     yes  0
1  2      no  1
2  3     yes  0
3  4      no  1
4  5  absent  2
票数 17
EN

Stack Overflow用户

发布于 2013-03-31 06:04:14

据我所知,FactorCategorical是一样的。我认为它最初被称为因子,然后更改为分类。若要转换为分类,您可以使用pandas.Categorical.from_array,如下所示:

代码语言:javascript
运行
复制
In [27]: df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : ['yes', 'no', 'yes', 'no', 'absent']})

In [28]: df
Out[28]: 
   a       b
0  1     yes
1  2      no
2  3     yes
3  4      no
4  5  absent

In [29]: df['c'] = pd.Categorical.from_array(df.b).labels

In [30]: df
Out[30]: 
   a       b  c
0  1     yes  2
1  2      no  1
2  3     yes  2
3  4      no  1
4  5  absent  0
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15723628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档