如何将 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.
我有一个来自 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.