如何从非数值型日期列提取日、月、年列以适配房价预测回归问题?
嘿,这个问题我太懂了!处理这种编码不规范的日期列完全没必要删除,用Python的pandas就能轻松提取出你需要的日、月、年信息,完美适配你的房价预测回归模型,下面给你一步步拆解操作:
第一步:把不规范日期转为标准datetime格式
不管你的日期列是啥乱七八糟的格式(比如混着"2023/10/05"、"Oct-5-2023"、"2023年10月5日"这种),pandas的to_datetime()函数都能自动识别,还能优雅处理无效值:
import pandas as pd # 假设你的数据框名为df,日期列叫"raw_date" df['standard_date'] = pd.to_datetime(df['raw_date'], errors='coerce')
这里的errors='coerce'参数很关键——它会把识别不了的无效日期转换成NaT(Not a Time),既不会让程序崩溃,还能方便你后续排查或处理异常值。
第二步:提取日、月、年生成新列
有了标准的datetime类型列之后,直接用dt属性就能轻松提取各个时间分量:
# 提取日,生成"day"列(数值型,1-31) df['day'] = df['standard_date'].dt.day # 提取月:可以选数字格式或名称格式 df['month_num'] = df['standard_date'].dt.month # 数字形式(1-12) df['month_name'] = df['standard_date'].dt.month_name() # 英文名称(比如October) # 提取年,生成"year"列(数值型,比如2023) df['year'] = df['standard_date'].dt.year
特殊情况处理:超奇葩格式的日期
如果你的日期列带了多余字符(比如"2023-10-05 星期三"、"【2023/10/05】"这种),可以先做字符串清洗再转格式:
# 示例:去掉日期后面的星期字符串 df['cleaned_date'] = df['raw_date'].str.replace(r' \w+$', '', regex=True) # 再转成标准datetime df['standard_date'] = pd.to_datetime(df['cleaned_date'])
放心,整个操作下来你原来的日期列会完整保留,同时新增的日、月、年列都是数值型(或可编码的类别型),刚好能作为回归模型的有效特征~
内容的提问来源于stack exchange,提问作者Soner Kar




