Consider the following three DataFrame :
df1 = pd.DataFrame([[1,2],[4,3]]) df2 = pd.DataFrame([[1,.2],[4,3]]) df3 = pd.DataFrame([[1,'a'],[4,3]])
The following are the types of the second column of the DataFrame :
In [56]: map(type,df1[1]) Out[56]: [numpy.int64, numpy.int64] In [57]: map(type,df2[1]) Out[57]: [numpy.float64, numpy.float64] In [58]: map(type,df3[1]) Out[58]: [str, int]
In the first case, all numpy.int64 are issued on numpy.int64 . Good. In the third case, there is basically no casting. However, in the second case, the integer ( 3 ) is dropped to numpy.float64 ; probably since the other number is a floating point.
How can I manage the casting? In the second case, I want to have both [float64, int64] and [float, int] as types.
Workaround:
Using the called print function can be a workaround, as shown here .
def printFloat(x): if np.modf(x)[0] == 0: return str(int(x)) else: return str(x) pd.options.display.float_format = printFloat