我看了很多线程,但都不能解决我的问题。我的df有以下头部:
Index(['2005 - Q2', '2005 - Q3', '2005 - Q4', '2006 - Q1', '2006 - Q2',
'2006 - Q3', '2006 - Q4', '2007 - Q1', '2007 - Q2', '2007 - Q3',
'2007 - Q4', '2008 - Q1', '2008 - Q2', '2008 - Q3', '2008 - Q4',
'2009 - Q1', '2009 - Q2', '2009 - Q3', '2009 - Q4', '2010 - Q1',
'2010 - Q2', '2010 - Q3', '2010 - Q4', '2011 - Q1', '2011 - Q2',
'2011 - Q3', '2011 - Q4', '2012 - Q1', '2012 - Q2', '2012 - Q3',
'2012 - Q4', '2013 - Q1', '2013 - Q2', '2013 - Q3', '2013 - Q4',
'2014 - Q1', '2014 - Q2', '2014 - Q3', '2014 - Q4', '2015 - Q1',
'2015 - Q2', '2015 - Q3', '2015 - Q4', '2016 - Q1', '2016 - Q2',
'2016 - Q3', '2016 - Q4', '2017 - Q1', '2017 - Q2', '2017 - Q3',
'2017 - Q4', '2018 - Q1', '2018 - Q2', '2018 - Q3', '2018 - Q4',
'2019 - Q1', '2019 - Q2', '2019 - Q3', '2019 - Q4', '2020 - Q1',
'2020 - Q2', '2020 - Q3', '2020 - Q4'],
dtype='object')我想把这些转换成日期,这样我就可以执行时间序列分析了。
THere是在索引中列出的标题之前的另一列。第一列具有不同的性质,不需要转换为日期。如何排除第一个标头?
此外,所有这些都是列标题,它们在下面的行中有一个值(如果这有帮助的话)。
发布于 2021-07-20 03:01:53
您可以这样做:
ix = pd.to_datetime(
ser.index.str.replace(' ', '', regex=False), errors='coerce'
)
# or if your format would be more complicated, you might need regexp
ix = pd.to_datetime(
ser.index.str.replace(r'(\d+) - Q(\d)', r'\1-Q\2', regex=True), errors='coerce'
)
ser2 = pd.Series(
index=ix,
data=ser.values
)我假设原版系列是ser。例如。
ser = pd.Series(
index=['2020 - Q2', '2020 - Q3', '2020 - Q4'],
data=range(3)
)我用this answer回答了你的问题。
您可能希望使用本季度的最后一天/最后一个工作日。在这种情况下,您可以使用像QuarterEnd / BQuarterEnd这样的偏移量
https://stackoverflow.com/questions/68445074
复制相似问题