Python 我可以使用DataFrame.to_csv和pandas.read_csv一致地写入和读取类型float吗?

Python 我可以使用DataFrame.to_csv和pandas.read_csv一致地写入和读取类型float吗?,python,pandas,floating-point,Python,Pandas,Floating Point,我想使用DataFrame.to_CSV将浮点值写入CSV文件,并确保在使用pandas.read_CSV读回时,我得到的内存值完全相同。文本表示不必对阅读者有意义 Python浮点值是否有通用的文本表示?还是一种可靠的反序列化和序列化浮点文本的方法 float_格式不保证读写可靠性是和否。如果您的float是float64格式,那么它没有什么区别;这是熊猫的默认浮动类型。如果您正在保存任何其他浮点类型(如float32或float16),则可能会丢失它,除非您事先知道该类型,并可以将其传递给r

我想使用DataFrame.to_CSV将浮点值写入CSV文件,并确保在使用pandas.read_CSV读回时,我得到的内存值完全相同。文本表示不必对阅读者有意义

Python浮点值是否有通用的文本表示?还是一种可靠的反序列化和序列化浮点文本的方法


float_格式不保证读写可靠性

是和否。如果您的float是float64格式,那么它没有什么区别;这是熊猫的默认浮动类型。如果您正在保存任何其他浮点类型(如float32或float16),则可能会丢失它,除非您事先知道该类型,并可以将其传递给
read\u csv

df = pd.DataFrame(np.random.randn(5, 2), dtype=np.float16)
df.to_csv('data.csv', index=False)

pd.read_csv('data.csv').dtypes
0    float64  # this should be float16, right?
1    float64
dtype: object

pd.read_csv('data.csv', dtype=pd.np.float16).dtypes # need dtype=... here
0    float16
1    float16
dtype: object

OTOH,如果您打算保留数据,那么对数据进行酸洗是一个更好的选择,它也更紧凑,应该更快一点(而不是计时)

df.to_pickle('data.pkl')

pd.read_pickle('data.pkl').dtypes
0    float16
1    float16
dtype: object