Многие десятичные числа с плавающей запятой не могут быть точно представлены с помощью float64 или float32.Например, Руководство с плавающей точкой , если вы не знакомы с этой проблемой.
Панды по умолчанию отображает плавающие точки с точностью до 6, а конечные 0 отбрасываютсяв выводе по умолчанию.
float64 может точно представлять числа примеров с точностью до (и выше) 6, тогда как float32 не может:
>>> print("%.6f" % np.float64(49.40))
49.400000
>>> print("%.6f" % np.float32(49.40))
49.400002
Если вас не интересует точность выше2-ая цифра при печати df, вы можете установить точность отображения:
pd.set_option('precision', 2)
Тогда вы получите тот же вывод даже с float32s:
>>> df.astype(np.float32)
600663.XSHG 000877.XSHE 600523.XSHG 601311.XSHG
2016-01-04 09:31:00 49.40 8.05 22.79 21.80
09:32:00 49.55 8.03 22.79 21.75
Если вы хотите, чтобы все вышло за рамки2-я цифра при обратной записи файла csv, используйте float_format :
df.to_csv(file_name, float_format="%.2f")