python - 用于时间序列分析的从季度到日期的列标题
问题描述
我查看了很多线程,但无法解决我的问题。我的 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')
我想将这些转换为日期,以便我可以执行时间序列分析。
在索引中列出的标题之前还有一列。第一列具有不同的性质,不需要转换为日期。如何排除第一个标题?
此外,所有这些都是在下面的行中具有值的列标题(以防万一)。
解决方案
你可以这样做:
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)
)
我用这个答案来回答你的。
您可能希望使用季度的最后一天/最后一个工作日。在这种情况下,您可以使用 QuarterEnd / BQuarterEnd 之类的偏移量
推荐阅读
- sql-server - 如何在 Docker compose 中设置 SQL Server 以使用 en_US.UTF-8
- .net-core - EF Core 更新仅在事务中引发异常
- java - 想要在 MAC 中将 Java 1.6 更新到 1.8
- php - cURL 无法使用 Guzzle 在 Laravel 中获取本地颁发者证书
- javascript - 在 Angular 中使用 ngrx 时捕获超时错误
- c# - 使用带有 unicode 信息的 string.Format
- jasmine - 量角器根据 ag-grid 表中的行文本单击 fa fa-pencil 按钮
- wordpress - wordpress的WPUF插件,将html标签放入自定义html表单时无法保存
- android - 如何检查其他主机是否连接到设备的 adb
- xamarin - 如何从不同的 ViewModel 访问 ViewModel 中的列表