【问题标题】:Pandas Date Functionality: Extracting Period Index information as StringPandas 日期功能:将期间索引信息提取为字符串
【发布时间】:2017-02-28 04:29:42
【问题描述】:

我有一个格式如下的数据框(df_qtr):

Index      2008Q4     2009Q1    2009Q2 
 Ex       85833.33   85433.33   85766.66
 Kc      153200.00  150533.33  149666.66
 Al       83766.66   84200.00   84333.33
 Jk      107933.33  113600.00  115366.66
 Ar      151200.00  147133.33  143900.00
 Ax      139300.00  137333.33  132700.00

列标题是期间索引,通过使用以下代码合并每月数据(日期为列标题)创建:

In[1]: df_qtr = df.groupby(pd.PeriodIndex(df.columns, freq='q'), axis=1).mean()

我想将列标题作为字符串提取为:

Out[1]: ['2008Q4', '2009Q1', '2009Q2']

我最接近的是将它转换回时间戳,然后是字符串:

 In[2]: list(df_qtr.columns.to_datetime().astype(str))
 Out[2]: Index(['2008-10-01', '2009-01-01', '2009-04-01']

但同样不适用于期间索引,我收到以下错误:

ValueError: Cannot cast PeriodIndex to dtype <U0

我可以再次将上面的列表转换为期间索引,然后将其转换为字符串,但没有更简单的解决方法吗?

【问题讨论】:

    标签: python pandas python-datetime


    【解决方案1】:

    好的,所以我在浏览文档时找到了答案。 datetime.strftime() 函数可用于:

    In[3]: df_qtr.columns.strftime('%YQ%q')
    Out[3]: array(['2008Q4', '2009Q1', '2009Q2'], dtype='<U6')
    

    事实证明它可以与日期时间、时间戳和周期索引一起使用。要了解更多信息,请阅读此处:strftime() and strptime() Behavior

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 2021-04-16
      • 2011-01-25
      • 2020-08-14
      • 2018-06-27
      • 2018-03-23
      • 2015-02-21
      • 1970-01-01
      • 2022-07-04
      相关资源
      最近更新 更多