问题描述
在我的数据框中,一列包含字母数字数据。在检查每个列类型的类型时,它们会显示为字符串,但是在用python编写csv文件时,该列中的某些数据会转换为科学计数法。 例如,将12e34转换为1.20E + 35。
当我写一个csv文件或excel文件时,我希望原始数据是字符串或文本。
在此先感谢您。
例如代码
>>>df=pd.read_csv('test.csv')
>>>df
Id
0 12E34
1 120PF
2 1875F
当我读取文件文件时,代码正确显示为12E34。但是,使用to_csv写入csv文件后,如果打开已保存的文件,则ID 12E34将转换为科学格式,即1.20E + 35。
解决方法
在保存期间,或者当您再次读取保存的数据时,它会转换吗?如果是第二个,请记住设置正确的dtype。 如果是保存问题,请尝试将报价设置为 csv.QUOTE_ALL
,我使用您的代码和示例来运行此部分。正如您所说,运行熊猫零件也可以。见下文:
import pandas as pd
df = pd.read_csv(r"test.csv",index_col=0)
df.to_csv(r"test2.csv")
df
Id
0 12E34
1 120PF
2 1875F
使用文本编辑器(如记事本或notepad ++ )打开保存的文件时,数据仍为12E34。使用 Excel和WPS 之类的“智能”软件打开保存的文件时,数据将为1.20E + 35。(我说“智能”为Excel的原因将推断出数据类型因此,Excel会从str推断为num的科学计数形式的12E34)
那是什么意思?这意味着保存的文件可以,但是您选择打开文件的软件不能很好地处理数据类型。
不用担心您保存的文件。您的数据仍然是正确的格式。可以使用记事本进行检查。如果您仍然想使用Excel之类的“智能”软件来打开文件。这是建议:将数据导入软件时,请确保ID列的数据类型为字符串。如果您使用的是Excel,请阅读本文https://www.ablebits.com/office-addins-blog/2014/05/01/convert-csv-excel/#import-csv-wizard中的方法3。