类型错误:需要浮点数|在if satatement

时间:2017-07-12 19:15:25

标签: python python-3.x pandas

for i in range(len(df)):
    for j in range(8):
        if math.isnan(df1.iloc[i,j]) == FALSE:
            b=b+1
            print(b ," correct out of", b+c)
        else:
            print("Error")

第36行出错(这是if语句)

TypeError: a float is required

3 个答案:

答案 0 :(得分:1)

df1.iloc[i,j]中存储的内容不是数字(intfloat)。您必须先将其强制转换为数字(假设它是一个类似数字的字符串)。

float(df1.iloc[i,j])

另外,在python中,保留字是False,而不是FALSE

答案 1 :(得分:1)

鉴于异常消息,您可能正在处理字符串。你可以尝试:

if not math.isnan(float(df1.iloc[i,j])):

而不是:

if math.isnan(df1.iloc[i,j]) == FALSE:

答案 2 :(得分:0)

语句上方的

,添加

print df1.iloc[i,j], type(df1.iloc[i,j])

这将显示该表达式的值和类型,希望您可以找出错误的原因。 math.isnan()确实需要一个浮点数,因为只有浮点数可以具有值NaN。另一种可能性是你根本不应该使用isnan(),但是你没有提供足够的信息来了解你正在做什么来找出你应该使用的东西。