使用to_csv保存Pandas DataFrame时如何保留指定数据类型?
如何在存储Pandas DataFrame时保留指定数据类型
这个问题我之前踩过坑!核心原因是CSV是纯文本格式,根本不保存数据类型的元信息。你用astype(int8)改完类型存到CSV里,其实只把数字写进去了,类型标记完全没保留,所以用read_csv读取时,Pandas会默认根据数值范围推断成int64。给你两个实用的解决办法:
1. 使用二进制格式存储(推荐)
CSV适合人类查看,但不适合保留数据类型。换成Pandas支持的二进制格式,能完整保存DataFrame的结构和数据类型,读取速度也更快:
- Pickle格式:Pandas原生支持,用法简单
# 存储 df.to_pickle('your_data.pkl') # 读取,直接保留原类型 df = pd.read_pickle('your_data.pkl')
- Feather格式:轻量快速,支持跨语言读取
# 存储 df.to_feather('your_data.feather') # 读取 df = pd.read_feather('your_data.feather')
- Parquet格式:适合大数据场景,压缩率高
# 存储 df.to_parquet('your_data.parquet') # 读取 df = pd.read_parquet('your_data.parquet')
2. 读取CSV时显式指定数据类型
如果必须使用CSV格式,那就在read_csv时通过dtype参数强制指定目标列的数据类型:
# 读取时指定'A'列为int8类型 df = pd.read_csv('your_data.csv', dtype={'A': 'int8'})
这样读取后的A列就会保持你想要的int8类型了。
内容的提问来源于stack exchange,提问作者Feephy
相关产品推荐
相关产品推荐

