无法将非有限值(NA或inf)转换为整数

时间:2018-10-29 06:50:58

标签: python dataframe

我有一个看起来像这样的数据框

   survived pclass  sex age sibsp   parch   fare    embarked
    0   1   1   female  29.0000 0   0   211.3375    S
    1   1   1   male    0.9167  1   2   151.5500    S
    2   0   1   female  2.0000  1   2   151.5500    S
    3   0   1   male    30.0000 1   2   151.5500    S
    4   0   1   female  25.0000 1   2   151.5500    S

我想将'sex'转换为0、1编码,并使用isull检查列中是否没有NA

但是,在这一行上,我收到ValueError:无法将非有限值(NA或inf)转换为整数

df['sex'] = df['sex'].map({'female':0, 'male':1}).astype(int)

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用np.where

例如:

import numpy as np

df['sex'] = np.where(df['sex'] == 'female', 0, 1)

答案 1 :(得分:0)

我认为正确的方法是使用replace函数

df.replace({'sex':{'female':0, 'male':1}}, inplace=True)

如果您的df有nan,那么您可以用一些值来填充它们,例如-1,使用fillna,然后替换其余的

df.fillna({'sex':-1}, inplace=True)
df.replace({'sex':{'female':0, 'male':1}}, inplace=True)