使用Pandas的to_datetime函数将月份名称转换为补零十进制数字
原因说明
你调用pd.to_datetime()得到的是完整的datetime类型对象,pandas会自动补全缺失的年(默认1900)和日(默认1号),所以不会直接返回月份数值。另外注意:数值类型的数字本身不支持前导零,所以补零格式的结果一定是字符串类型,如果后续需要参与数值计算,取1-12的整数类型即可。
简洁实现方法
方法1:基于日期对象直接格式化(最常用,代码量最少)
在你现有代码的基础上,调用datetime访问器的格式化方法即可,完全不需要正则:
# 得到补零的月份字符串(比如"01","02") data['month_num'] = pd.to_datetime(data['month'], format='%B').dt.strftime('%m') # 如果不需要补零,要1-12的整数类型,用下面这行 # data['month_num'] = pd.to_datetime(data['month'], format='%B').dt.month
方法2:映射表替换(性能更优,适合大数据量场景)
如果你的月份都是标准英文全称,可直接用预定义的字典做映射,省去日期转换的开销:
month_map = { 'January': '01', 'February': '02', 'March': '03', 'April': '04', 'May': '05', 'June': '06', 'July': '07', 'August': '08', 'September': '09', 'October': '10', 'November': '11', 'December': '12' } data['month_num'] = data['month'].map(month_map)
内容的提问来源于stack exchange,提问作者saze
相关产品推荐
相关产品推荐

