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