【问题标题】:Slice a Dataframe Index per year - Python - Pandas每年切片一个数据框索引 - Python - Pandas
【发布时间】:2018-06-16 13:43:51
【问题描述】:

我有一个包含过去 10 年每日股票数据的数据框,这是数据框的一部分:

            ITUB4   ITUB3
DATE        
2007-04-26  13.46   11.12
2007-04-27  13.49   11.00
2007-04-30  13.19   10.92
2007-05-02  13.57   11.09
2007-05-03  13.90   11.25
... ... ...
2017-12-21  42.72   37.39
2017-12-22  42.52   36.99
2017-12-26  42.69   37.44
2017-12-27  42.46   37.46
2017-12-28  42.57   37.68
2641 rows × 2 columns

有没有一种简单的方法可以每年对该数据帧进行切片?我知道可以通过使用来做到这一点:

df['20061230':'20071231']

我想知道是否有类似的东西:

df.index.year['2017']

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:

    使用布尔索引,即

    df[df.index.year==2017]
    
            ITUB4  ITUB3
    DATE                    
    2017-12-21  42.72  37.39
    2017-12-22  42.52  36.99
    2017-12-26  42.69  37.44
    2017-12-27  42.46  37.46
    2017-12-28  42.57  37.68
    

    【讨论】:

      【解决方案2】:

      您可以使用df['2017']df.loc['2017']。 pandas 足够聪明,可以理解它是 DateTimeIndex 的年份部分(请参阅docs)。

      我更喜欢loc,因为更明显的是这是一个索引操作——而不是一列。

      df.loc['2017']
      Out: 
                  ITUB4  ITUB3
      DATE                    
      2017-12-21  42.72  37.39
      2017-12-22  42.52  36.99
      2017-12-26  42.69  37.44
      2017-12-27  42.46  37.46
      2017-12-28  42.57  37.68
      

      【讨论】:

        猜你喜欢
        • 2017-01-17
        • 2015-03-16
        • 2017-01-16
        • 1970-01-01
        • 2021-08-27
        • 2019-07-22
        • 1970-01-01
        • 2018-10-05
        • 2016-10-09
        相关资源
        最近更新 更多