正如this question/answerLev Landau 所指出的,可能有一个简单的解决方案,可以在read_csv 函数中为某个列使用converters 选项。
converters={'column_name': lambda x: str(x)}
您可以参考pandas.io.parsers.read_csv documentation中read_csv函数的更多选项。
假设我有 csv 文件 projects.csv,如下所示:
project_name,project_id
Some Project,000245
Another Project,000478
例如下面的代码正在修剪前导零:
import csv
from pandas import read_csv
dataframe = read_csv('projects.csv')
print dataframe
结果:
me@ubuntu:~$ python test_dataframe.py
project_name project_id
0 Some Project 245
1 Another Project 478
me@ubuntu:~$
解决方案代码示例:
import csv
from pandas import read_csv
dataframe = read_csv('projects.csv', converters={'project_id': lambda x: str(x)})
print dataframe
要求的结果:
me@ubuntu:~$ python test_dataframe.py
project_name project_id
0 Some Project 000245
1 Another Project 000478
me@ubuntu:~$
更新,因为它可以帮助他人:
要将所有列作为str,可以这样做(来自评论):
pd.read_csv('sample.csv', dtype = str)
要将大多数或选择性列作为str,可以这样做:
# lst of column names which needs to be string
lst_str_cols = ['prefix', 'serial']
# use dictionary comprehension to make dict of dtypes
dict_dtypes = {x : 'str' for x in lst_str_cols}
# use dict on dtypes
pd.read_csv('sample.csv', dtype=dict_dtypes)