将dtype('O')日期转换为DD/MM/YYYY格式的Python技术求助
解决方法
步骤1:正确将字符串列转换为datetime类型
你的日期数据格式是YYYY-MM-DD HH:MM:SS(比如1988-10-24 00:00:00),之前用%m/%d/%Y匹配肯定报错,因为格式不对应。可以用两种方式转换:
# 方式1:指定精确格式(推荐,速度更快) tabela['dt_nasc'] = pd.to_datetime(tabela['dt_nasc'], format='%Y-%m-%d %H:%M:%S') # 方式2:让pandas自动推断格式(适合格式统一的场景,更省心) tabela['dt_nasc'] = pd.to_datetime(tabela['dt_nasc'], errors='coerce') # errors='coerce'会把无法转换的无效值转为NaT(缺失日期),避免报错
步骤2:转换为DD/MM/YYYY格式输出
转换为datetime类型后,pandas默认显示为YYYY-MM-DD,要得到DD/MM/YYYY格式,有两种选择:
选项A:生成新的字符串列(永久修改为字符串格式)
如果需要将日期以字符串形式存储为DD/MM/YYYY,用dt.strftime():
# 添加新列存储格式化后的日期 tabela['dt_nasc_ddmmyyyy'] = tabela['dt_nasc'].dt.strftime('%d/%m/%Y') # 或者直接替换原列 # tabela['dt_nasc'] = tabela['dt_nasc'].dt.strftime('%d/%m/%Y')
选项B:仅修改显示格式(保留datetime类型)
如果只是需要在查看表格时显示为DD/MM/YYYY,但仍保留datetime的计算功能,设置pandas的全局显示格式:
pd.options.display.date_format = '%d/%m/%Y'
之后查看tabela时,datetime列就会自动以DD/MM/YYYY格式展示。
你之前代码的问题说明
- 第一次代码报错:
format='%m/%d/%Y'和你的实际数据格式YYYY-MM-DD HH:MM:SS不匹配,导致解析失败。 - 第二次代码:函数
convert_to_date内部的tabela.loc[:, 'dt_nasc'] = ...缩进错误,代码根本没执行;而且就算成功转换为datetime类型,pandas默认显示格式不是DD/MM/YYYY,所以你看不到预期效果。
内容的提问来源于stack exchange,提问作者Lucas Borges
相关产品推荐
相关产品推荐

