我有一个csv文件,该文件通过pandas加载,如下所示:
classes_dataset2=pd.read_csv("labels.csv")
classes_dataset2[0:10]
0 A
1 A
2 N
3 N
4 O
5 O
6 5
7 5
8 P
9 P
Name: label, dtype: object
在以下情况下不接受此
dtype: object
from sklearn.preprocessing import LabelBinarizer
encoder=LabelBinarizer()
classes_dataset = encoder.fit_transform(classes_dataset2)
我得到了以下错误
ValueError: Mix of label input types (string and number)
这就是为什么我想将
dtype
从对象转换为dtype='|S5'
以便获得如下标签的原因:array(['A', 'A', 'N', 'N', 'O', 'O', '5', '5', 'P', 'P'],
dtype='|S5')
我如何将对象类型转换为'| S5'类型?
编辑1
当我做
classes_dataset2.astype('|S5')
from sklearn.preprocessing import LabelBinarizer
encoder=LabelBinarizer()
classes_dataset = encoder.fit_transform(classes_dataset2.astype('|S5'))
我没有错误。似乎有效。但是,我想知道是否需要
['A','A','N','N','O','O','5','5,'P','P']或
[0,1,2,.. 9]?
您能向我确认需要吗:
['A','A','N','N','O','O','5','5,'P','P'],而不是索引?
最佳答案
您可以使用astype
强制转换dtype
的Series
,通常我会选择str
,但是如果您坚持使用numpy类型的'|S5'
,则可以通过以下操作:
In [16]:
s = pd.Series(['A','A', 'N', 'N', 'O', 'O', 5, 5, 'P','P'])
s
Out[16]:
0 A
1 A
2 N
3 N
4 O
5 O
6 5
7 5
8 P
9 P
dtype: object
In [18]:
s.astype('|S5')
Out[18]:
0 b'A'
1 b'A'
2 b'N'
3 b'N'
4 b'O'
5 b'O'
6 b'5'
7 b'5'
8 b'P'
9 b'P'
dtype: bytes40
指的是
object
在这里的意思,如果您混合的dtype不是全部为数字或不是str
,则object
此处是指python对象,这是预期的正确行为关于python - 将dtype =对象转换为dtype ='| S5',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43492277/