如何用Python Lambda为DataFrame添加'Month_Year'日期列?
解决方法
问题分析
你之前的代码存在两个核心问题:
- 尝试对尚未创建的
Month_Year列调用apply,会直接抛出KeyError - 仅硬编码处理了
Jan一种月份,既没有覆盖所有月份,也没有动态引用Year列的数值
正确实现方式
我们可以先定义一个月份缩写到数字的映射字典,再通过apply按行处理,结合Year和Month列生成目标格式的日期字符串:
# 定义月份缩写到两位数字的映射 month_map = { 'Jan': '01', 'Feb': '02', 'Mar': '03', 'Apr': '04', 'May': '05', 'Jun': '06', 'Jul': '07', 'Aug': '08', 'Sep': '09', 'Oct': '10', 'Nov': '11', 'Dec': '12' } # 按行生成Month_Year列 data['Month_Year'] = data.apply(lambda row: f"01-{month_map[row['Month']]}-{row['Year']}", axis=1)
说明
axis=1参数指定apply按行处理,这样lambda函数可以同时访问当前行的Year和Month值- 映射字典覆盖了所有月份的缩写,确保任意月份都能转换为对应的两位数字
- 若你的
Month列是月份全称(比如February),只需修改映射字典的键,例如'February': '02'即可
内容的提问来源于stack exchange,提问作者Aditya kumar
相关产品推荐
相关产品推荐

