首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫按季度编排日期时间指数

熊猫按季度编排日期时间指数
EN

Stack Overflow用户
提问于 2018-04-21 15:34:56
回答 2查看 3.8K关注 0票数 4

在重新安排工作后,我将每月的价值转换为季度价值:

代码语言:javascript
复制
hs=hs.resample('QS',axis=1).mean()

很好,我的专栏如下所示:

代码语言:javascript
复制
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',

现在,我希望它们以YYYYq1-4格式转换,我认为这种转换应该像(根据这个链接)一样容易:

代码语言:javascript
复制
hs.columns.strftime('%Yq%q')

但这意味着:

代码语言:javascript
复制
array(['2000qq', '2000qq', '2000qq', '2000qq', '2001qq', '2001qq',
   '2001qq', '2001qq', '2002qq', '2002qq', '2002qq', '2002qq',
   '2003qq', '2003qq', '2003qq', '2003qq', '2004qq', '2004qq',

我哪里出问题了,我怎么解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-21 15:53:00

文档指定期间数据类型(而不是日期时间数据类型)上的strftime;要使用%q格式化程序,可以将日期时间索引转换为周期(天为单位),然后对其进行格式化:

代码语言:javascript
复制
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')

或者简单地使用to_periodQ (季度)作为单元:

代码语言:javascript
复制
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')
票数 6
EN

Stack Overflow用户

发布于 2018-04-21 15:45:39

使用pd.Series.dt.to_period的一种方法

代码语言:javascript
复制
df = pd.DataFrame(columns=['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'])

df.columns = pd.to_datetime(df.columns.to_series()).dt.to_period('Q')

print(df.columns)

# PeriodIndex(['2000Q1', '2000Q2', '2000Q3', '2000Q4', '2001Q1', '2001Q2',
#              '2001Q3', '2001Q4', '2002Q1', '2002Q2', '2002Q3', '2002Q4'],
#             dtype='period[Q-DEC]', freq='Q-DEC')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49957395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档