时间序列预测中如何将Object类型转换为Datetime类型
解决DataFrame中"JUL-13"格式日期转为当月第一天Datetime类型的问题
问题背景
现有DataFrame结构示例:
trxyear trxmonth 0 2014 JUL-13 1 2014 JUL-13 ... 46394 2023 SEP-22 46398 2023 SEP-22
需要将trxmonth列(如JUL-13)转换为当月第一天的Datetime类型(目标:JUL-13对应2013-07-01),但使用dateutil.parser.parse时会错误识别年份和日期(如JUL-13被解析为2022-07-13),添加日信息后虽能正确解析,但原始数据无日字段。
可行解决方案
方法1:拼接日信息+指定格式解析
直接给trxmonth字段补全日信息(固定为01),再用pandas.to_datetime指定格式解析,这是最简洁的方式:
import pandas as pd # 假设df为目标DataFrame df['trxmonth'] = pd.to_datetime('01-' + df['trxmonth'], format='%d-%b-%y')
- 格式说明:
%d代表日,%b代表英文月份缩写(如JUL),%y代表两位年份,能精准匹配你的日期格式。
方法2:拆分字段构造日期
如果需要更灵活的年份处理,可先拆分trxmonth的月份和年份部分,再构造完整日期:
# 拆分月份和年份 df[['month_abbr', 'year']] = df['trxmonth'].str.split('-', expand=True) # 构造当月第一天的日期字符串并转换 df['trxmonth'] = pd.to_datetime(f'01-{df["month_abbr"]}-{df["year"]}', format='%d-%b-%y') # 可选:删除临时生成的拆分列 df.drop(['month_abbr', 'year'], axis=1, inplace=True)
方法3:自定义解析函数
如果有特殊格式需要兼容,可结合datetime模块写自定义解析函数:
from datetime import datetime def parse_month_to_first_day(date_str): month_abbr, year = date_str.split('-') return datetime.strptime(f'01-{month_abbr}-{year}', '%d-%b-%y') df['trxmonth'] = df['trxmonth'].apply(parse_month_to_first_day)
效果验证
执行上述任意方法后,trxmonth列会被正确转换为Datetime类型:
- 输入
JUL-13→ 输出2013-07-01 00:00:00 - 输入
SEP-22→ 输出2022-09-01 00:00:00
内容的提问来源于stack exchange,提问作者Mehmaam
相关产品推荐
相关产品推荐

