我正在从API提取数据到其索引值如下的pandas数据框:-
df.index=['Q1-2013',
'Q1-2014',
'Q1-2015',
'Q1-2016',
'Q1-2017',
'Q1-2018',
'Q2-2013',
'Q2-2014',
'Q2-2015',
'Q2-2016',
'Q2-2017',
'Q2-2018',
'Q3-2013',
'Q3-2014',
'Q3-2015',
'Q3-2016',
'Q3-2017',
'Q3-2018',
'Q4-2013',
'Q4-2014',
'Q4-2015',
'Q4-2016',
'Q4-2017',
'Q4-2018']
它是字符串值的列表。有没有办法将其转换为熊猫日期时间?我探索了一些问答,它们涉及使用pd.to_datetime,当索引属于对象类型时,该方法才有效。在此示例中,索引值是字符串。预期产量:
new_df=magic_function(df.index)
print(new_df.index[0])
01-2013
想知道如何构建“ magic_function”。提前致谢。Q1是1月的季度1,Q2是4月的季度2,Q3是7月的季度3,Q4是10月的季度4
通过一些操作使解析起作用,您可以pd.PeriodIndex
根据需要使用和格式化(原因是需要使用格式%Y%q
):
df.index = [''.join(s.split('-')[::-1]) for s in df.index]
df.index = pd.PeriodIndex(df.index, freq='Q').to_timestamp().strftime('%m-%Y')
print(df.index)
Index(['01-2013', '01-2014', '01-2015', '01-2016', '01-2017', '01-2018',
'04-2013', '04-2014', '04-2015', '04-2016', '04-2017', '04-2018',
'07-2013', '07-2014', '07-2015', '07-2016', '07-2017', '07-2018',
'10-2013', '10-2014', '10-2015', '10-2016', '10-2017', '10-2018'],
dtype='object')
我们还可以使用来获取所需的格式str.replace
:
df.index = df.index.str.replace(r'(Q\d)-(\d+)', r'\2\1')
df.index = pd.PeriodIndex(df.index, freq='Q').to_timestamp().strftime('%m-%Y')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句