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

How to convert a string that only has the month and year in a Pandas column into a datetime with another format in Python?

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

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

任何 feedback/tip 将不胜感激。

转换将在格式中增加一天。

https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html

pd.to_datetime looks for standard designations of the datetime component in the column names, including:

required: year, month, day

optional: hour, minute, second, millisecond, microsecond, nanosecond

因此在转换时你会得到一天(时间是可选的):

pd.to_datetime('JAN2021', format='%b%Y')
>> Timestamp('2021-01-01 00:00:00')

您可以使用pd.to_datetime to convert the month-year string (e.g. JAN2021) to datetime format. Then, use dt.strftime()将日期时间对象格式化为mmm-YYYY中所需的布局(例如Jan-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官方文档here.