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

时间:2017-12-29 16:30:31

标签: python csv dataframe types

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)。我该如何避免这种情况?

1 个答案:

答案 0 :(得分: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中的单元格格式更改为" General"而不是"数字"。