' str'的实例之间不支持并且'漂浮'

时间:2017-04-25 17:17:23

标签: python-3.x pandas machine-learning

在处理csv文件中以下列的缺失数据时,它会抛出TypeError.How来解决这个问题?

trainData.Gender.fillna(trainData.Gender.max(),inplace =True)
trainData.Married.fillna(trainData.Married.max(),inplace=True)

TypeError: '>=' not supported between instances of 'str' and 'float'

trainData.dtypes
    Loan_ID               object
    Gender                object
    Married               object
    Dependents            object
    Education             object
    Self_Employed         object
    ApplicantIncome        int64
    CoapplicantIncome    float64
    LoanAmount           float64
    Loan_Amount_Term     float64
    Credit_History       float64
    Property_Area         object
    Loan_Status           object

3 个答案:

答案 0 :(得分:5)

这样做你实际上是在考虑丢失数据(NaN,被视为浮点数)来寻找最大值。所以:

trainData.Gender.fillna(trainData.Gender.max(),inplace =True)

将尝试比较str与浮点数。

你需要这样做:

trainData.Gender.fillna(trainData.Gender.dropna().max(),inplace =True)
trainData.Gender.fillna(trainData.Married.dropna().max(),inplace =True)

答案 1 :(得分:5)

我在适应模型时遇到了同样的问题。

我做了:

trainData=trainData.fillna("")

它解决了我的问题。同意上面的@VictorGGI字样。缺失的值视为float,而其他值为str

答案 2 :(得分:0)

我遇到了一个非常类似的问题,错误消息是:'float'和'str'实例之间不支持'<'

我试图在我正在处理的数据集中的另一个名为“ Outlet_Type”的列中为特定值计算名为“ Outlet_Size”的特定列中的模式。

事实证明,“ Outlet_Size”列中的缺失值(我试图进行估算,这是计算均值的动机)本身就是一个障碍,因为熊猫会将这些缺失值(或NaN)作为浮点型,而该列中的其余值都是字符串,显然无法找到模式。

解决方案是用空白字符串填充那些缺失的值。

data.Outlet_Size = data.Outlet_Size.fillna('')

正如我仅对特定列所做的那样,我使用了上面的语法。如果我必须将其应用于整个数据集,

data = data.fillna('')

对于多列,语法应该是

data[['column1','column2']] = data[['column1','column2']].fillna('')