在 Pandas 中将文本转换为 int64 分类

Convert text to int64 categorical in Pandas

我在 data['artist'] 中有一些艺术家姓名,我想通过以下方式将其转换为分类列:

x = data['artist'].astype('category').cat.codes
x.dtype 

Returns:

dtype('int32')

我得到负数,这表明存在某种溢出情况。所以,我想改用 np.int64,但找不到有关如何完成此操作的文档。

x = data['artist'].astype('category').cat.codes.astype(np.int64)
x.dtype

给予

dtype('int64')

但很明显 int32 已转换为 int64,因此负值仍然存在

x = data['artist'].astype('category').cat.codes.astype(np.int64)
x.min()

-1

我想你在 artist 列中有 NaN,所以代码是 -1:

data=pd.DataFrame({'artist':[np.nan,'y','z','x','y','z']})

x = data['artist'].astype('category').cat.codes
print x
0   -1
1    1
2    2
3    0
4    1
5    2
dtype: int8

要检查 NaN,您可以使用 isnull:

print data[data.artist.isnull()]
  artist
0    NaN