我正在使用 read_csv
将研究数据导入 Pandas 数据框。
我的主题代码是 6 个数字编码,其中包括出生日期。对于我的一些科目,这会导致代码带有前导零(例如“010816”)。
当我导入 Pandas 时,前导零被去除,列格式为 int64
。
有没有办法将该列原封不动地导入为字符串?
我尝试为该列使用自定义转换器,但它不起作用 - 似乎自定义转换发生在 Pandas 转换为 int 之前。
最佳答案
如 this answer 中所示由 Lev Landau , 可以有一个简单的解决方案来为 read_csv
中的某个列使用 converters
选项功能。
converters={'column_name': str}
假设我有 csv 文件 projects.csv
,如下所示:
project_name,project_id
Some Project,000245
Another Project,000478
例如下面的代码正在修剪前导零:
from pandas import read_csv
dataframe = read_csv('projects.csv')
print dataframe
结果:
project_name project_id
0 Some Project 245
1 Another Project 478
解决方案代码示例:
from pandas import read_csv
dataframe = read_csv('projects.csv', converters={'project_id': str})
print dataframe
要求的结果:
project_name project_id
0 Some Project 000245
1 Another Project 000478
将所有列设为str:
pd.read_csv('sample.csv', dtype=str)
将某些列作为str:
# column names which need to be string
lst_str_cols = ['prefix', 'serial']
dict_dtypes = {x: 'str' for x in lst_str_cols}
pd.read_csv('sample.csv', dtype=dict_dtypes)
关于python - 使用 Pandas 读取 CSV 时如何在列中保持前导零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250046/