Python 如何将所有字符串(如“Fault”)转换为唯一的浮点?
我有一个数据帧,其中包含Python 如何将所有字符串(如“Fault”)转换为唯一的浮点?,python,pandas,numpy,keras,Python,Pandas,Numpy,Keras,我有一个数据帧,其中包含int、float和object(带字符的字符串)项。我希望每个唯一的对象都有一个唯一的浮动,就像这样- Exhuast Fault Probation Exhaust Fault Motor 到 另外,它会在所有列上工作,还是我必须一列一列地工作 最后一个问题,它是否也会将所有的int转换为float?如Jon所述,您可以利用 要在整个数据帧上按列执行此操作,只需使用apply 演示 >>> s = pd.Series(['Exhaust', 'Fa
int
、float
和object
(带字符的字符串)项。我希望每个唯一的对象都有一个唯一的浮动,就像这样-
Exhuast
Fault
Probation
Exhaust
Fault
Motor
到
另外,它会在所有列上工作,还是我必须一列一列地工作
最后一个问题,它是否也会将所有的
int
转换为float
?如Jon所述,您可以利用
要在整个数据帧上按列执行此操作,只需使用apply
演示
>>> s = pd.Series(['Exhaust', 'Fault', 'Probation', 5, int,
'Exhaust', int, 'Fault', 'Motor'])
>>> s
0 Exhaust
1 Fault
2 Probation
3 5
4 <class 'int'>
5 Exhaust
6 <class 'int'>
7 Fault
8 Motor
dtype: object
>>> (s.factorize()[0]+1).astype('float')
array([ 1., 2., 3., 4., 5., 1., 5., 2., 6.])
然而,通过一些粗略的基准测试,Pandas解决方案可能会更快 你看过吗?非常感谢!
(s.factorize()[0]+1).astype('float')
>>> s = pd.Series(['Exhaust', 'Fault', 'Probation', 5, int,
'Exhaust', int, 'Fault', 'Motor'])
>>> s
0 Exhaust
1 Fault
2 Probation
3 5
4 <class 'int'>
5 Exhaust
6 <class 'int'>
7 Fault
8 Motor
dtype: object
>>> (s.factorize()[0]+1).astype('float')
array([ 1., 2., 3., 4., 5., 1., 5., 2., 6.])
(np.unique(s, return_inverse=True)[1]+1).astype('float')