如何从熊猫日期时间索引中过滤特定月份

use*_*207 2 python datetime python-3.x pandas

我有一个每天的数据集,范围是2000-2010。我已经通过设置了“ GregDate”列

df.set_index(pd.DatetimeIndex(df['GregDate'])) 
Run Code Online (Sandbox Code Playgroud)

作为索引。现在,我只想调查从十一月到三月的十年(所有十年)。

我的数据框如下所示:

                Sigma        Lat        Lon
GregDate                                   
2000-01-01  -5.874062  79.913437 -74.583125
2000-01-02  -6.794000  79.904000 -74.604000
2000-01-03  -5.826061  79.923939 -74.548485
2000-01-04  -5.702439  79.916829 -74.641707
...
2009-07-11 -10.727381  79.925952 -74.660714
2009-07-12 -10.648000  79.923667 -74.557333
2009-07-13 -11.123095  79.908810 -74.596190

[3482 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)

我已经看过这个问题,但仍然无法解决我的问题。

jez*_*ael 7

我认为你需要boolean indexingDatetimeIndex.monthIndex.isin

df = df[df.index.month.isin([11,12,1,2,3])]
print (df)
               Sigma        Lat        Lon
GregDate                                  
2000-01-01 -5.874062  79.913437 -74.583125
2000-01-02 -6.794000  79.904000 -74.604000
2000-01-03 -5.826061  79.923939 -74.548485
2000-01-04 -5.702439  79.916829 -74.641707
Run Code Online (Sandbox Code Playgroud)

  • @EHB如果使用旧熊猫尝试numpy`df = df [np.in1d(df.index.month,[11,12,1,2,3])]打印(df)`,未经测试。 (2认同)

Max*_*axU 6

In [10]: df.query("index.dt.month in [11,12,1,2,3]")
Out[10]:
               Sigma        Lat        Lon
GregDate
2000-01-01 -5.874062  79.913437 -74.583125
2000-01-02 -6.794000  79.904000 -74.604000
2000-01-03 -5.826061  79.923939 -74.548485
2000-01-04 -5.702439  79.916829 -74.641707
Run Code Online (Sandbox Code Playgroud)