我在保存/阅读csv文件时遇到了一个问题。我将一个 Dataframe 保存到csv中。在许多列中,它有一个名为id的列
ID
0000
0011
0022
A979
问题是当我使用以下命令保存到csv时
df.to_csv(path, index=False)
结果如下
ID
0
11
22
A979
它基本上会擦除前面的0。
我相信excel认为数据是int,这就是为什么它们被删除。我试图将excel中的列的格式更改为字符串,但仍然不起作用。我注意到该列的dtype是object。因此,我尝试了以下方法
df['ID'] = df['ID'].astype(str)
而dtype仍然是object。我还尝试
df['ID'] = df['ID'].astype('string')
但效果并不好。
df['column'] = df['column'].astype('|S')
我注意到结果打印如下
ID
b'0000'
b'0011'
b'0022'
A979
然后我试着用
df['column'] = df['column'].str.replace('b', '')
但我得到了以下错误
Cnnot use .str.replace with values of inferred dtype 'bytes'
你知道怎么解决这个问题吗?
EDIT 1:当用excel保存时,输出是正确的。这似乎是csv的问题
1条答案
按热度按时间e3bfsja21#
我也遇到了同样的问题,我通过在www.example.com _csv中使用dtype选项打开dataframe解决了这个问题pd.read。
在您的情况下:df.to_csv(path,index=False,dtype= {“ID”:object})
希望有帮助!