You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

时间序列预测中如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:45:23