如何在Pandas中将非标准日期格式(如2000M01)转换为目标格式?
处理非标准日期格式的转换方案
没问题,这种2000M01这类非标准日期格式的转换,在pandas里有几种非常实用的方法,我给你梳理两种最常用的思路,尤其是第二种方案,能帮你轻松和另一个目标格式的数据集对齐:
方案一:直接转换为2000Jan格式
如果你只想直接把2000M01转成2000Jan这类年份加月份缩写的格式,可以一步到位:
import pandas as pd # 假设你的DataFrame是df,日期列名为'date_col' df['formatted_date'] = pd.to_datetime(df['date_col'], format='%YM%m').dt.strftime('%Y%b')
format='%YM%m':告诉pandas如何解析你的非标准格式——%Y匹配4位年份,M是固定的分隔字符,%m匹配两位月份;dt.strftime('%Y%b'):把解析后的datetime对象格式化为你要的样式,%b会输出英文月份的缩写(Jan、Feb...)。
方案二:先转成标准datetime格式(推荐,适配多场景)
如果需要和另一个2000Jan格式的数据集对齐,先统一转成标准的2000-01这类datetime类型会更灵活,后续不管是合并数据集还是再转其他格式都很方便:
# 第一步:将非标准日期转成pandas的datetime类型(即2000-01-01这类标准格式) df['standard_date'] = pd.to_datetime(df['date_col'], format='%YM%m') # 第二步:如果之后需要转成2000Jan格式,再执行这一步 df['formatted_date'] = df['standard_date'].dt.strftime('%Y%b')
适配另一个数据集的转换
如果你的另一个数据集日期是2000Jan格式,也用同样的方法转成标准datetime:
# 假设另一个数据集是other_df,日期列是'target_date' other_df['standard_date'] = pd.to_datetime(other_df['target_date'], format='%Y%b')
这样两个数据集就可以通过standard_date列轻松合并、对齐,还能支持后续的日期筛选、运算等操作。
处理异常值
如果你的日期列里有不符合格式的脏数据,可以通过errors参数处理,比如把无效值设为NaT(pandas里的空日期):
df['standard_date'] = pd.to_datetime(df['date_col'], format='%YM%m', errors='coerce')
内容的提问来源于stack exchange,提问作者JoshBob
相关产品推荐
相关产品推荐

