在处理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
答案 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('')