通过索引上的函数过滤熊猫数据框

时间:2019-08-09 04:19:58

标签: python pandas dataframe

我有一个以Date为索引的数据框,我想提取给定月份(例如1月)的所有行。例如给定

Date         Col1 
2000-01-01    1   
...
2000-12-31    12   
2001-01-01    1   
...
2001-12-31    12   
2002-01-01    1   
...
2002-12-31    12   

然后这有效

f = df.index.map(lambda x: x.month==1)
new_df = df[f]

是否有更简单的获取new_df的方法?

我本来希望能够做类似df.loc[lambda x: x.month==1]的事情,但这是行不通的,因为x实际上是df(与.loc的预期相反)所有其他形式的.loc调用中的实际标签,因此尽管x将是索引的每个标签)。或df.filter(lambda x: x.month==1)filter不接受回调。

1 个答案:

答案 0 :(得分:2)

您可以将pandas.DatetimeIndex.monthloc一起使用,以在条件匹配的地方返回索引

df.loc[df.index.month==1]
#df[df.index.month==1]

            Col1
Date            
2000-01-01   1.0
2001-01-01   1.0
2002-01-01   1.0