在python中写入csv文件时,字母数字数据被转换为科学计数法

问题描述

在我的数据框中,一列包含字母数字数据。在检查每个列类型的类型时,它们会显示为字符串,但是在用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。