Python 将数据框保存为csv,但输出单元格类型变为数字而不是文本

Python 将数据框保存为csv,但输出单元格类型变为数字而不是文本,python,csv,dataframe,types,Python,Csv,Dataframe,Types,这是可行的,但在编写csv时,当在Excel中打开csv文件时,0003418(type=str)等标识符的值将转换为3418(type=general)。如何避免这种情况?我找不到这个问题的答案,所以我将发表我的评论作为解决方案 这是一个Excel问题,不是一个python错误。Excel自动格式化数值列以删除前导0。您可以通过在编写以下内容时强制pandas引用来“修复”此问题: import pandas as pd check = pd.read_csv('1.csv') nocheck

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

我找不到这个问题的答案,所以我将发表我的评论作为解决方案

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

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,并将Excel中的单元格格式更改为“常规”而不是“数字”。

在读取或写入时?我认为,如果列的开头是str,那么在编写时不会发生这种情况?值会变成一个数字,在哪里?熊猫?在InsertcsReadingProgramhere中?您使用什么来发现数据正在更改?如果您使用Excel打开CSV,那么这是Excel的错,而不是Python的错。基于@excaza的注释构建-如果您使用Excel,它可能会自动格式化数值列。您可以将列格式更改为文本,也可以在写入时使用
nocheck.to_csv('nocheck.csv',quoting=csv.QUOTE_ALL)
可能重复的是更改仅在excel中明显,但我如何避免这种情况?
import csv
# insert pandas code from question here
# use csv.QUOTE_ALL when writing CSV.
nocheck.to_csv('NoCheck.csv', quoting=csv.QUOTE_ALL)