It appears that float.is_integer is the only "is" method with an underscore in its name among built-in types in Python. Examples that don't include an underscore: str.isalnum, str.isalpha, str.isdecimal, str.isdigit, str.isidentifier, str.islower, str.isnumeric, str.isprintable, str.isspace, str.istitle, str.isupper.
Any clues as to why?
By PEP 8, I would expect all these names to include an underscore. But practicality beats purity (PEP 20), so omitting the underscore in frequently used and short names makes sense. However, both naming conventions at once seems as a consequence of backward compatibility (with the logging module as the canonical example).
float.is_integeris a more recent addition (as of 2.6), long after PEP8 has been established? Thestrapis were probably there since the beginning and were not changed due to compatibility reasons (though it probably could have in 3).float.fromhexcould also potentially be renamed, I'm sure there's more cases to be found throughout the standard types.