基于索引值对数据框进行子集筛选

10

我有一个按日期索引的每周股票价格回报数据框,如下所示。

            FTSE_350    SP_500
2005-01-14 -0.004498 -0.001408
2005-01-21  0.001287 -0.014056
2005-01-28  0.011469  0.002988
2005-02-04  0.016406  0.027037
2005-02-11  0.015315  0.001887 

我想返回一个数据框,其中索引在某个区间内,比如所有2005年1月的日期。我知道可以通过将索引转换为“日期”列来实现此目的,但我想知道是否有直接实现这一点的方法。

1个回答

18

没错,有一个比做列还简单的方法!

使用.loc函数,然后只需切片取出日期,如下:

print(df.loc['2005-01-01':'2005-01-31'])

输出:

            FTSE_350    SP_500
2005-01-14 -0.004498 -0.001408
2005-01-21  0.001287 -0.014056
2005-01-28  0.011469  0.002988

顺便提一下,如果索引是对象,则执行以下操作:

df.index = pd.to_datetime(df.index)

一切之前。

正如@Peter提到的,最好的方法是:

print(df.loc['2005-01'])

也会输出:

            FTSE_350    SP_500
2005-01-14 -0.004498 -0.001408
2005-01-21  0.001287 -0.014056
2005-01-28  0.011469  0.002988

3
好的回答。也可以使用 df.loc['2005-01']。如果原始数据的索引是字符串类型,可以使用 df.index = pd.to_datetime(df.index) 进行修复。 - Peter Leimbigler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接