如何将int64类型YYYYMMDD格式的dataframe列转换为YYYY/MM/DD datetime格式
实现步骤
你可以直接使用pandas内置的to_datetime方法完成转换,注意:datetime类型本身没有固定的字符串显示格式,格式仅在你需要输出为字符串时指定,转换为datetime类型后可直接用于时间计算、筛选等操作。
基础转换(转datetime类型)
假设你的DataFrame名称为df,存储int类型日期的列名为date_int:
# 指定format参数匹配你现有的YYYYmmdd格式,比自动识别效率高很多,尤其数据量大时优势明显 df['date'] = pd.to_datetime(df['date_int'], format='%Y%m%d')
如果你的数据中存在不符合格式的异常值,可以增加errors参数避免报错:
# 不符合格式的值会被转为NaT(时间类型的空值) df['date'] = pd.to_datetime(df['date_int'], format='%Y%m%d', errors='coerce')
输出为2018/05/31格式的字符串
如果需要将日期以年/月/日的格式存储为字符串,可在转成datetime类型后调用strftime方法:
df['date_str'] = df['date'].dt.strftime('%Y/%m/%d')
完整示例
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'date_int': [20180531, 20190615, 20221201, 99999999] # 最后一个为异常值示例 }) # 转换为datetime类型 df['date'] = pd.to_datetime(df['date_int'], format='%Y%m%d', errors='coerce') # 生成指定格式的字符串列 df['date_formatted'] = df['date'].dt.strftime('%Y/%m/%d') print(df)
运行后输出结果如下:
| date_int | date | date_formatted |
|---|---|---|
| 20180531 | 2018-05-31 | 2018/05/31 |
| 20190615 | 2019-06-15 | 2019/06/15 |
| 20221201 | 2022-12-01 | 2022/12/01 |
| 99999999 | NaT | NaT |
内容的提问来源于stack exchange,提问作者N-Sam
相关产品推荐
相关产品推荐

