如何使用pandas转换DataFrame特定格式日期并生成ISO格式新列
实现方案
操作分两步即可,逻辑简单易上手:
- 使用pandas内置的日期解析工具,把原列
colDat里的英文格式日期字符串转成可处理的时间对象 - 把时间对象按目标格式输出为字符串,赋值给新建的
newColDat列
可直接运行的代码
import pandas as pd # 复现你手中的原始DataFrame结构 df = pd.DataFrame({ "colDat": ["09 Mar 2021", "09 Feb 2021"] }) # 解析原日期列,匹配格式为「日期+英文月份缩写+四位年份」 parsed_time = pd.to_datetime(df["colDat"], format="%d %b %Y") # 生成目标格式的新列,保留4位小数和示例输出完全匹配 df["newColDat"] = parsed_time.dt.strftime("%Y-%m-%dT%H:%M:%S.%f").str[:-2]
输出效果
代码执行完成后,DataFrame的最终结构和你预期完全一致:
| colDat | newColDat |
|---|---|
| 09 Mar 2021 | 2021-03-09T00:00:00.0000 |
| 09 Feb 2021 | 2021-02-09T00:00:00.0000 |
实操提示
- 给
pd.to_datetime传入明确的format参数,相比默认自动猜测格式的模式,解析速度更快,也能避免模糊日期被识别错误的问题 - 原列的日期没有时分秒信息时,pandas会自动把时间部分补全为当日0点整,刚好匹配示例里的全0时分秒结构
- 代码里的
%f是pandas的微秒占位符,默认输出6位数字,通过.str[:-2]截断后就会保留示例里的4位小数,不会多输出冗余的0
内容的提问来源于stack exchange,提问作者vlad
相关产品推荐
相关产品推荐

