如何将DataFrame列中的mmm-yy格式值转换为datetime类型
将mmm-yy格式的日期列转换为datetime类型
在pandas里处理这种格式的日期非常直接,核心是用pd.to_datetime()函数并指定匹配的格式字符串:
基础转换代码
假设你的DataFrame是df,目标日期列名为month_year:
import pandas as pd # 示例数据 df = pd.DataFrame({'month_year': ['feb-20', 'mar-20', 'oct-21', 'jan-99']}) # 转换列类型 df['month_year'] = pd.to_datetime(df['month_year'], format='%b-%y')
关键细节说明
%b用于匹配缩写的月份名称(如feb对应二月),这个格式默认对大小写敏感。如果你的数据里有大写月份(比如FEB-20),可以添加case=False参数忽略大小写:df['month_year'] = pd.to_datetime(df['month_year'], format='%b-%y', case=False)%y匹配2位数年份,pandas默认的映射规则是:00-69 → 2000-2069,70-99 → 1970-1999。如果需要自定义世纪规则(比如把所有2位数年份都映射到2000年后),可以用自定义函数处理:from datetime import datetime def parse_custom_year(date_str): dt = datetime.strptime(date_str, '%b-%y') # 强制将所有2位数年份转为20xx dt = dt.replace(year=dt.year + 2000 if dt.year < 100 else dt.year) return dt df['month_year'] = df['month_year'].apply(parse_custom_year)
转换完成后,你可以用df.dtypes查看列类型,确认已经转为datetime64[ns]类型,后续就能正常使用日期筛选、计算等操作了。
内容的提问来源于stack exchange,提问作者user19998362
相关产品推荐
相关产品推荐

