Python 将yyyqn转换为yyyy-mm
我有一个数据框:Python 将yyyqn转换为yyyy-mm,python,pandas,dataframe,numpy,datetime,Python,Pandas,Dataframe,Numpy,Datetime,我有一个数据框: ID日期卷 2009年第1季度第9季度 2020Q2 11 2009年第2季度39 2020Q4 23 我想将其转换为yyyy Qn到datetime 我用字典把相应的日期映射到季度 但是在yyyy发生变化的情况下,我需要一个更通用的代码 预期产出: ID日期卷 1 2019-03 9 1 2020-06 11 2 2019-09 39 2 2020-12 23 这里有一个简单的解决方案,但效率不高(如果您的数据集不太大,应该
ID日期卷
2009年第1季度第9季度
2020Q2 11
2009年第2季度39
2020Q4 23
我想将其转换为yyyy Qn
到datetime
我用字典把相应的日期映射到季度
但是在yyyy
发生变化的情况下,我需要一个更通用的代码
预期产出:
ID日期卷
1 2019-03 9
1 2020-06 11
2 2019-09 39
2 2020-12 23
这里有一个简单的解决方案,但效率不高(如果您的数据集不太大,应该不会有问题)
使用to_datetime将日期列转换为datetime。
然后在每个日期加上2个月,因为您希望月是季度月的结束
df = pd.DataFrame({'date': ["2019Q1" ,"2019Q3", "2019Q2", "2020Q4"], 'volume': [1,2,3, 4]})
df['datetime'] = pd.to_datetime(df['date'])
df['datetime'] = df['datetime'] + pd.DateOffset(months=2)
输出相同
date volume datetime
0 2019Q1 1 2019-03-01
1 2019Q3 2 2019-09-01
2 2019Q2 3 2019-06-01
3 2020Q4 4 2020-12-01
让我们使用
pd.PeriodIndex
:
df['Date_new'] = pd.PeriodIndex(df['Date'], freq='Q').strftime('%Y-%m')
输出:
ID Date Volume Date_new
0 1 2019Q1 9 2019-03
1 1 2020Q2 11 2020-06
2 2 2019Q3 39 2019-09
3 2 2020Q4 23 2020-12
你试了什么?请花点时间阅读。字典和地图。。但是需要一个更通用的代码。谢谢这个链接可能会帮助你:上一张唱片真的是W4而不是Q4吗?