如何在Pandas中合并日列与月年列生成日期列?
解决Pandas合并日、月年列生成标准日期列的问题
当然可以实现这个需求,下面是针对你提供的DataFrame结构的具体实现步骤:
首先还原你的原始DataFrame:
import pandas as pd df = pd.DataFrame({ '日': [13, 15, 24], '月年': ['septiembre /98', 'August/98', 'Novem /98'] })
接下来处理「月年」列中的多语言/缩写月份文本,将其映射为两位数字的月份代码:
# 定义月份映射字典,覆盖数据中出现的所有月份变体 month_mapping = { 'septiembre': '09', # 西班牙语九月 'August': '08', # 英语八月 'Novem': '11' # November的简写,对应十一月 } # 拆分「月年」列,提取月份文本和年份 df[['月份文本', '年份']] = df['月年'].str.split('/', expand=True) # 去除月份文本两端的空格(比如处理'septiembre '这类带空格的内容) df['月份文本'] = df['月份文本'].str.strip() # 将月份文本映射为两位数字 df['月份'] = df['月份文本'].map(month_mapping) # 拼接日、月、年成DD-MM-YY格式的日期字符串 df['日期'] = df['日'].astype(str) + '-' + df['月份'] + '-' + df['年份'].str.strip() # 保留目标列,生成最终DataFrame final_df = df[['日', '月年', '日期']] print(final_df)
运行后将得到你预期的结果:
| 日 | 月年 | 日期 |
|---|---|---|
| 13 | septiembre /98 | 13-09-98 |
| 15 | August/98 | 15-08-98 |
| 24 | Novem /98 | 24-11-98 |
补充说明
如果后续数据出现更多月份变体,只需在month_mapping字典中添加对应的键值对即可(比如遇到「Nov」就补充'Nov': '11'),确保映射覆盖所有出现的月份形式。
内容的提问来源于stack exchange,提问作者Nikita Menon
相关产品推荐
相关产品推荐

