如何将Eviews格式日期(如2022M8)转换为Python的20220801格式
解决Eviews格式日期转换为Python标准日期格式的问题
你的代码失败的原因是格式字符串与输入日期的结构不匹配。输入日期是YYYYMmm格式(如1973M10、2022M8),但你使用的%Y M /%m包含空格和斜杠,完全不符合输入的格式规则。
修正后的代码示例
import datetime # 单个日期转换示例 date_time_str = '1973M10' # 匹配Eviews日期格式:年份(YYYY) + 'M' + 月份(1-2位数字) date_time_obj = datetime.datetime.strptime(date_time_str, '%YM%m') # 转换为YYYYMMDD格式(默认当月第一天) formatted_date = date_time_obj.strftime('%Y%m%d') print("转换后的日期格式类型:", type(formatted_date)) print("转换后的日期:", formatted_date)
批量转换日期列表
如果要处理一批日期向量,可以用循环实现:
import datetime eviews_dates = ['2022M8', '2022M09', '1973M10'] formatted_dates = [] for date_str in eviews_dates: date_obj = datetime.datetime.strptime(date_str, '%YM%m') formatted_dates.append(date_obj.strftime('%Y%m%d')) print("批量转换结果:", formatted_dates)
关键说明
%YM%m:准确匹配Eviews日期的结构,%Y解析4位年份,M匹配固定字符'M',%m解析1或2位的月份数字(自动兼容8和09两种写法)。%Y%m%d:将datetime对象格式化为YYYYMMDD格式,默认取当月第一天(因为原日期没有具体日信息)。
内容的提问来源于stack exchange,提问作者Jonathan Alexander Munoz Marti
相关产品推荐
相关产品推荐

