Pandas将无效字符串日期转为0000-00-00后提取年月的实现方法
解决方法
错误原因
你之前报错是因为pd.to_datetime默认遇到无法识别的日期格式时会直接抛出解析错误,需要调整参数处理无效值。
实现代码
import pandas as pd # 先做临时日期转换,无法解析的内容转为NaT(时间类型空值),不会报错 temp_datetime = pd.to_datetime(df['Date'], errors='coerce') # 提取年份,空值填充为0后格式化为4位字符串 df['Date_Year'] = temp_datetime.dt.year.fillna(0).astype(int).astype(str).str.zfill(4) # 提取月份,空值填充为0后格式化为2位带前导零的字符串 df['Date_month'] = temp_datetime.dt.month.fillna(0).astype(int).astype(str).str.zfill(2) # 如果你需要把原Date列的无效值替换为0000-00-00,可额外加这一行 # df.loc[temp_datetime.isna(), 'Date'] = '0000-00-00'
效果说明
运行后输出结果和你要求的预期格式完全一致,所有无效日期字符串、缺失值对应的年份会返回0000,月份返回00,原始有效日期的年月提取也正常。
内容的提问来源于stack exchange,提问作者LdM
相关产品推荐
相关产品推荐

