python dtype强制类型转换_为什么从对象或str转换为类别时dtype不同?

为什么在pandas中将一个专栏转换为一个类别时,我会收到两种不同的行为?在

例如,假设我用>>> import pandas as pd

>>> import numpy as np

>>> pd.__version__

u'0.22.0'

>>> np.__version__

'1.14.0'

>>> df = pd.DataFrame(columns=['nombre'], data=[1,2,3,4])

现在我将列转换为一个对象:

^{pr2}$

数据类型现在是object。在>>> df['nombre'] = df['nombre'].astype('category')

>>> print(df['nombre'].cat.categories.dtype.name)

int64

转换为类别后,内部数据类型为int64。在

让我们从一个新的数据帧开始>>> del df

>>> df = pd.DataFrame(columns=['nombre'], data=[1,2,3,4])

这一次,我们将内部列转换为“str”>>> df['nombre'] = df['nombre'].astype('str')

>>> print(df['nombre'].dtype)

object

内部表示是一个对象。这是有道理的,因为我们转换为'str'。在>>> df['nombre'] = df['nombre'].astype('category')

>>> print(df['nombre'].cat.categories.dtype.name)

object

在转换为一个类别之后,内部数据类型现在是object,这与我们之前收到的int64不同?在

所以我的问题是,为什么从一个对象数据类型转换为一个类别时,我会收到两个不同的行为?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值