我有一个以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
不接受回调。
答案 0 :(得分:2)
您可以将pandas.DatetimeIndex.month
与loc
一起使用,以在条件匹配的地方返回索引
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