我无法理解以下内容: 当我检查“ RUN_ID”的类型时,它会清楚地指出“ float”。但是当我检查它是否为float时,它返回False。 到底是什么类型?如何检查?
tags.loc[0, 'RUN_ID']
Out[36]: 38607.0
type(tags.loc[0, 'RUN_ID'])
Out[34]: float
isinstance(type(tags.loc[0, 'RUN_ID']),np.float64)
Out[32]: False
isinstance(type(tags.loc[0, 'RUN_ID']),np.float32)
Out[33]: False
isinstance(type(tags.loc[0, 'RUN_ID']),float)
Out[35]: False
答案 0 :(得分:5)
您使用的isinstance
错误。代替
isinstance(type(tags.loc[0, 'RUN_ID']),float)
只要做
isinstance(tags.loc[0, 'RUN_ID'],float)
type()
函数返回类型为type
的对象,您需要该对象本身的类型。
答案 1 :(得分:2)
isinstance(type(tags.loc[0, 'RUN_ID']),float)
返回false,因为type(tags.loc[0, 'RUN_ID'])
返回float
,实际上是type
类型。您可以说
type(type(tags.loc[0, RUN_ID']))
因此,您实际上是在检查类型float
的类型是否与类型float
(即False
)相同。
所以也许尝试
isinstance(tags.loc[0, 'RUN_ID'],float)?
答案 2 :(得分:2)
检查常规浮点类型而不是numpy。测试结果如下
w = isinstance(n, float) # True
x = isinstance(n, np.float32) # False
y = isinstance(n, np.float64) # False
z = type(n) == float # True
答案 3 :(得分:0)
我相信isinstance()会检查某个值是否是某个类,而不是两个类值是否相同。
例如,isinstance(0.35, float)
返回True。
您拥有的方式基本上是在问“类型float是否是float的实例?”这是不正确的。