sla*_*law 5 python pandas categorical-data
我有一些艺术家姓名,data['artist']我想通过以下方式转换为分类列:
x = data['artist'].astype('category').cat.codes
x.dtype
Run Code Online (Sandbox Code Playgroud)
返回:
dtype('int32')
Run Code Online (Sandbox Code Playgroud)
我得到负数,这表明存在某种溢出情况。因此,我想使用np.int64它,但我找不到有关如何完成此操作的文档。
x = data['artist'].astype('category').cat.codes.astype(np.int64)
x.dtype
Run Code Online (Sandbox Code Playgroud)
给予
dtype('int64')
Run Code Online (Sandbox Code Playgroud)
但很明显 int32 已转换为 int64,因此负值仍然存在
x = data['artist'].astype('category').cat.codes.astype(np.int64)
x.min()
-1
Run Code Online (Sandbox Code Playgroud)
我认为你NaN在专栏中有artist,所以代码是-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
Run Code Online (Sandbox Code Playgroud)
为了检查NaN你可以使用isnull:
print data[data.artist.isnull()]
artist
0 NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |