我有以下日期框架列Time Period
。在此列中,我混合了时间段,下面是一个唯一列表,该时间最初记录为季度,然后切换为每月。
Time Period
2018 Q1
2018 Q2
2018 Jul
2018 Aug
2018 Sep
2018 Oct
2018 Nov
2018 Dec
我正在尝试使用Pandas to_datetime函数设置以上to_datetime
。
代码
year_data['Time Period'] = pd.to_datetime(year_data['Time Period'])
但是,2018 Q1
和2018 Q2
产生以下错误-valueError: ('Unknown string format:', '2018 Q1')
我希望实现的目标如下。
Time Period
01/03/2018
01/06/2018
01/07/2018
01/08/2018
01/09/2018
01/10/2018
01/11/2018
01/12/2018
任何帮助都将不胜感激。
答案 0 :(得分:1)
默认情况下,句点是在第一个月进行解析,只需将空字符串替换为-
:
year_data['Time Period'] = pd.to_datetime(year_data['Time Period'].str.replace(' ', '-'))
print (year_data)
Time Period
0 2018-01-01
1 2018-04-01
2 2018-07-01
3 2018-08-01
4 2018-09-01
5 2018-10-01
6 2018-11-01
7 2018-12-01
但是对于从季度中解析出的值,可以添加2
个月:
m = year_data['Time Period'].str.contains('Q')
year_data['Time Period'] = pd.to_datetime(year_data['Time Period'].str.replace(' ', '-'))
year_data.loc[m, 'Time Period'] += pd.DateOffset(months=2)
最后DD/MM/YYYY
个自定义格式的字符串使用Series.dt.strftime
:
year_data['Time Period'] = year_data['Time Period'].dt.strftime('%d/%m/%Y')
print (year_data)
Time Period
0 01/03/2018
1 01/06/2018
2 01/07/2018
3 01/08/2018
4 01/09/2018
5 01/10/2018
6 01/11/2018
7 01/12/2018