在 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
我在 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