每年对数据帧索引进行切片 - Python - Pandas

Ris*_*ech 6 dataframe python-3.x pandas

我有一个包含过去 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
Run Code Online (Sandbox Code Playgroud)

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

df['20061230':'20071231']
Run Code Online (Sandbox Code Playgroud)

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

df.index.year['2017']
Run Code Online (Sandbox Code Playgroud)

ayh*_*han 6

您可以使用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
Run Code Online (Sandbox Code Playgroud)