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

2024-07-03 01:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个来自PDF文件的数据集,其中包含以下格式的日期列:JAN2021,我想将其转换为只显示月份和年份的datetime,但显示为JAN-2021。我尝试使用下面的语句,但它不起作用,是否有任何方法可以通过修改数据来做到这一点(也就是说,不添加该月的一天作为修改)

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

如有任何反馈/提示,将不胜感激


Tags: 文件to数据方法datetimepdf格式语句
2条回答

您可以使用^{}将月-年字符串(例如JAN2021)转换为日期时间格式。然后,使用^{}将datetime对象格式化为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

转换将为格式添加一天

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')

相关问题 更多 >