首页 > 解决方案 > 如何将 Pandas 列中只有月份和年份的字符串转换为 Python 中另一种格式的日期时间?

问题描述

我有一个来自 PDF 文件的数据集,其中包含以下格式的日期列:JAN2021,我想将其转换为仅显示月份和年份的日期时间,但显示为 JAN-2021。我尝试使用下面的语句,但它不起作用,有什么办法可以通过更改数据来做到这一点(意思是不添加该月的一天作为更改)。

df2['MONTH1'] = pd.to_datetime(df2['MONTH1'], format="%mmm%YY")

任何反馈/提示将不胜感激。

标签: pythonpython-3.xpandaspython-datetime

解决方案


您可以使用pd.to_datetime将月份-年份字符串(例如 JAN2021)转换为日期时间格式。然后,使用将日期时间对象格式化为(例如)dt.strftime()中所需的布局,如下所示:mmm-YYYYJan-2021

(假设您的数据框被调用df并且列名是Col1):

df['Col_new'] = pd.to_datetime(df['Col1'], format='%b%Y').dt.strftime('%b-%Y')

结果:

print(df)

      Col1   Col_new
0  JAN2021  Jan-2021
1  FEB2021  Feb-2021
2  MAR2021  Mar-2021
3  APR2021  Apr-2021

您在试用代码中使用了无效的格式字符串"%mmm%YY"。有关有效格式字符串及其含义的完整列表,以及示例,您可以在此处参考 Python 官方文档。


推荐阅读