将DataFrame保存到csv但输出单元格类型变为数字而不是文本

问题描述 投票:-2回答:1
import pandas as pd
check = pd.read_csv('1.csv')
nocheck = check['CUSIP'].str[:-1]
nocheck = nocheck.to_frame()
nocheck['CUSIP'] = nocheck['CUSIP'].astype(str)
nocheck.to_csv('NoCheck.csv')

这有效,但在编写csv时,当在Excel中打开csv文件时,0003418(type = str)等标识符的值将转换为3418(type = general)。我该如何避免这种情况?

python csv dataframe types
1个回答
0
投票

我无法找到这个问题的傻瓜,所以我会发表评论作为解决方案。

这是一个Excel问题,而不是python错误。 Excel自动格式化数字列以删除前导0。您可以通过强制pandas在编写时引用来“修复”此问题:

import csv
# insert pandas code from question here
# use csv.QUOTE_ALL when writing CSV.
nocheck.to_csv('NoCheck.csv', quoting=csv.QUOTE_ALL)

请注意,这实际上会在CSV中的每个值周围加上引号。它将在Excel中呈现您想要的方式,但如果您尝试以其他方式读取文件,则可能会遇到问题。

另一种解决方案是在不引用的情况下编写CSV,并将Excel中的单元格格式更改为“常规”而不是“数字”。

© www.soinside.com 2019 - 2024. All rights reserved.