Python 熊猫:将YYYYQQ值的索引转换为datetime对象

Python 熊猫:将YYYYQQ值的索引转换为datetime对象,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有以下数据帧: df = pd.DataFrame({'A':[1,2,3],'B':[4,3,2]},index = ['201701','201702','201703']) 其中字符串值的索引是格式为YYYYQQ(季度数据)的日期 当我尝试将其转换为datetime对象时,出现错误: pd.to_datetime(df.index) .... ValueError: month must be in 1...12 我觉得这是由于to_datetime推断df.index的格式,但我找

我有以下数据帧:

df = pd.DataFrame({'A':[1,2,3],'B':[4,3,2]},index = ['201701','201702','201703'])
其中字符串值的索引是格式为YYYYQQ(季度数据)的日期

当我尝试将其转换为datetime对象时,出现错误:

pd.to_datetime(df.index)
....
ValueError: month must be in 1...12
我觉得这是由于to_datetime推断df.index的格式,但我找不到解决方法。有什么帮助吗

更新:@Zero的答案同样有效,但这最终也是一个解决方案:

pd.to_datetime([x[:-2] + str(int(x[-2:])*3) for x in df.index], format = '%Y%m')
使用

我会使用熊猫期:

In [92]: x = pd.PeriodIndex(df.index.astype(str).str.replace(r'0(\d)$', r'q\1'), freq='Q')

In [93]: x
Out[93]: PeriodIndex(['2017Q1', '2017Q2', '2017Q3'], dtype='period[Q-DEC]', freq='Q-DEC')

In [94]: x.to_timestamp()
Out[94]: DatetimeIndex(['2017-01-01', '2017-04-01', '2017-07-01'], dtype='datetime64[ns]', freq='QS-OCT')

这对月度数据有效,但这是季度数据。最后两位数字对应的是季度,第一季度不应该在1月开始,而不是3月?财务第一季度是3月,至少在这个地区是这样。那么这才是重要的,但要注意模糊性:从“日期的季度:1-3月=1,4-6月=2,等等。”
In [92]: x = pd.PeriodIndex(df.index.astype(str).str.replace(r'0(\d)$', r'q\1'), freq='Q')

In [93]: x
Out[93]: PeriodIndex(['2017Q1', '2017Q2', '2017Q3'], dtype='period[Q-DEC]', freq='Q-DEC')

In [94]: x.to_timestamp()
Out[94]: DatetimeIndex(['2017-01-01', '2017-04-01', '2017-07-01'], dtype='datetime64[ns]', freq='QS-OCT')