Python 避免在使用数据帧读取数据时自动将数据转换为int

Python 避免在使用数据帧读取数据时自动将数据转换为int,python,csv,pandas,Python,Csv,Pandas,我有一个没有标题的csv文件。它有大约35根柱子 我正在用熊猫阅读这个文件。 目前的问题是,当它读取文件时,会自动为每列分配数据类型 如何避免分配自动数据类型 我有一个C列,我想将其存储为字符串而不是int。但是熊猫会自动将其分配给int 我试了两件事 (一) 上面的代码给了我一个错误 ValueError: Expected 37 fields in line 1, saw 35 如果我删除,converters={'C':str},engine='python'则没有错误 (二) 这种方法

我有一个没有标题的csv文件。它有大约35根柱子

我正在用熊猫阅读这个文件。 目前的问题是,当它读取文件时,会自动为每列分配数据类型

如何避免分配自动数据类型

我有一个C列,我想将其存储为字符串而不是int。但是熊猫会自动将其分配给int

我试了两件事

(一)

上面的代码给了我一个错误

ValueError: Expected 37 fields in line 1, saw 35
如果我删除,
converters={'C':str},engine='python'
则没有错误

(二)


这种方法的问题是,如果列中的值为“00123”,它已经被转换为123,然后将其转换为“123”。它将丢失初始零,因为它认为它是整数。

在read\u csv中使用dtype选项或转换器,无论是否使用python引擎都可以工作:

df = pd.DataFrame({'col1':['00123','00125'],'col2':[1,2],'col3':[1.0,2.0]})
df.to_csv('test.csv',index=False)
new_df = pd.read_csv('test.csv',dtype={'col1':str,'col2':np.int64,'col3':np.float64})
如果只使用
dtype=str
,则它会将中的每一列作为字符串(对象)读取。但是你不能用
转换器那样做,因为它需要一本字典。您可以用上面代码中的
dtype
替换
converter
,得到相同的结果

old_df['C'] = old_df['C'].astype(int)
df = pd.DataFrame({'col1':['00123','00125'],'col2':[1,2],'col3':[1.0,2.0]})
df.to_csv('test.csv',index=False)
new_df = pd.read_csv('test.csv',dtype={'col1':str,'col2':np.int64,'col3':np.float64})