每年切片一个Dataframe索引 - Python - Pandas

时间:2018-01-07 08:59:27

标签: python-3.x pandas dataframe

我有一个数据框,其中包含过去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']

2 个答案:

答案 0 :(得分:3)

您可以使用df['2017']df.loc['2017']。大熊猫很聪明,可以理解它是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

答案 1 :(得分:2)

使用布尔索引,即

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