dr *_*rry 4 python datetime datetime-format dataframe pandas
通过重采样工作,我将每月值转换为季度值:
hs=hs.resample('QS',axis=1).mean()
Run Code Online (Sandbox Code Playgroud)
效果很好,我的列如下所示:
hs.columns:
DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
'2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
'2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01',
Run Code Online (Sandbox Code Playgroud)
现在我希望它们以 YYYYq[1-4] 格式进行转换,我认为这应该很简单(根据此链接):
hs.columns.strftime('%Yq%q')
Run Code Online (Sandbox Code Playgroud)
但这给出了:
array(['2000qq', '2000qq', '2000qq', '2000qq', '2001qq', '2001qq',
'2001qq', '2001qq', '2002qq', '2002qq', '2002qq', '2002qq',
'2003qq', '2003qq', '2003qq', '2003qq', '2004qq', '2004qq',
Run Code Online (Sandbox Code Playgroud)
我哪里出错了,我该如何解决?
该文档指定strftime了Period数据类型而不是Datetime数据类型;要使用%q格式化程序,您可以将日期时间索引转换为周期(以天为单位),然后对其进行格式化:
cols = pd.DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
'2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
'2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01'])
cols.to_period('D').strftime('%Yq%q')
# hs.columns.to_period('D').strftime('%Yq%q')
#array([u'2000q1', u'2000q2', u'2000q3', u'2000q4', u'2001q1', u'2001q2',
# u'2001q3', u'2001q4', u'2002q1', u'2002q2', u'2002q3', u'2002q4'],
# dtype='<U6')
Run Code Online (Sandbox Code Playgroud)
或者干脆用to_period与Q(季度)为单位:
cols.to_period('Q')
# hs.columns.to_period('Q')
#PeriodIndex(['2000Q1', '2000Q2', '2000Q3', '2000Q4', '2001Q1', '2001Q2',
# '2001Q3', '2001Q4', '2002Q1', '2002Q2', '2002Q3', '2002Q4'],
# dtype='period[Q-DEC]', freq='Q-DEC')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |