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')