Pandas读取CSV自动转字符串为日期,如何强制保留原字符串格式?
问题原因
pandas 读取CSV时默认会自动推断疑似日期格式的字段内容,部分版本中该推断逻辑优先级高于dtype参数的全局类型指定,会先将1/2这类内容转换为日期对象,再强制转为字符串时就变成了01-Feb这类格式化后的日期文本。
解决方法
方法1:全局禁用日期自动推断
读取时添加parse_dates=False参数,完全关闭pandas的自动日期识别逻辑:
df = pd.read_csv( "/Users/Name/Desktop/QM/data.csv", encoding='latin-1', dtype=str, parse_dates=False )
方法2:单独指定目标列的转换规则
如果其他字段需要正常自动推断类型,仅需要保留指定列的原始字符串格式,可以用converters参数单独给目标列设置字符串转换规则,该规则优先级高于自动类型推断:
# 请将代码中的target_column替换为你要处理的实际列名 df = pd.read_csv( "/Users/Name/Desktop/QM/data.csv", encoding='latin-1', converters={"target_column": str} )
注意事项
如果执行上述操作后还是得到日期格式的内容,请先用纯文本编辑器打开原始CSV文件,确认文件内存储的原始值是否已经是日期格式,部分从Excel导出的CSV会默认将这类分数格式的内容转为日期存储到CSV中,如果原始文件内已经是日期格式,需要先从导出环节调整,保证CSV原始内容就是1/2这类原始字符串。
内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra
相关产品推荐
相关产品推荐

