我有一个数据框(df)。 Date变量是一个字符串。我想将其转换为日期并重新格式化为该季度末的日期。下面是一个示例:
df:
Date
0 201601
1 201602
2 201603
3 201604
201601
是2016年第一季度,201604
是2016年第四季度。期望的结果是:
df:
Date
0 2016-03-31
1 2016-06-30
2 2016-09-30
3 2016-12-31
这是我尝试过的方法,但是不起作用。
df['date'] = pd.to_datetime(df.Date, format = '%Y%q')
谢谢!
答案 0 :(得分:1)
您可以定义一个函数来计算日期,然后应用该函数。
使用日历模块(https://docs.python.org/3.7/library/calendar.html#calendar.monthrange)中的monthrange函数,您的函数可能类似于:
from calendar import monthrange
from datetime import datetime
def end_quarter(quarter):
year = int(quarter[:4])
month = int(quarter[-2:]) * 3
day = monthrange(year, month)[1]
return datetime(year, month, day).date()
,然后可以使用:
df["Date"] = df["Date"].apply(end_quarter)
答案 1 :(得分:0)
一种方法是继续将其视为字符串,并简单地执行if / else语句,即
res = []
for i in df['Date']:
v1 = i[-2:]
if v1 == '01':
res.append(i[:4] + '-03-31')
elif v1 == '02':
res.append(i[:4] + '-06-30')
elif v1 == '03':
res.append(i[4:] + '-09-30')
else:
res.append(i[4:] + '-12-31')
#>>> res
#['2016-03-31', '2016-06-30', '03-09-30', '04-12-31']