我有一个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'类型?
EDIT1
当我做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']而不是索引?
答案 0 :(得分:2)
您可以使用astype
投射dtype
的{{1}},通常我会选择Series
,但如果您坚持使用numpy类型str
那么你可以通过这个:
'|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
在这里的含义,如果你的混合dtypes不是全部数字或object
那么str
这里指的是python对象,这是预期和正确的行为< / p>