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