如何使用按月和年输入的日期时间索引过滤数据框?熊猫

时间:2017-07-27 08:57:02

标签: python pandas datetime indexing

给出df这样的:

df=pd.read_csv(PATH + 'Matriz3_fechas.csv',index_col='Fecha',skiprows=0)
df.index = pd.DatetimeIndex(df.index)

请注意,Fecha已经是日期时间格式为**的索引

 Fecha                D576972dc305aa  D576972dc32e9a  D576972dc3590a  \

2016-06-01 00:00:00         0.0          0.0               0.1  \
2016-07-01 00:05:00         0.0          0.0               0.1  \
2017-05-01 00:10:00         0.0          0.0               0.1  \
2017-05-01 00:15:00         0.0          0.0               0.1  \                                                             
2017-07-01 00:20:00         0.0          0.0               0.1  \

我曾尝试按月和年进行过滤:

df=df[(df.index.month==5)&(matriz.index.year==2017)]

但它不会过滤df得到:(想要的结果)

 Fecha                D576972dc305aa  D576972dc32e9a  D576972dc3590a  \

2017-05-01 00:10:00         0.0          0.0               0.1  \
2017-05-01 00:15:00         0.0          0.0               0.1  \

1 个答案:

答案 0 :(得分:1)

您可以使用partial string indexing

#for datetimeindex use parameter parse_dates 
df=pd.read_csv(PATH+'Matriz3_fechas.csv',index_col='Fecha',skiprows=0,parse_dates=['Fecha'])

print (df.index)
DatetimeIndex(['2016-06-01 00:00:00', '2016-07-01 00:05:00',
               '2017-05-01 00:10:00', '2017-05-01 00:15:00',
               '2017-07-01 00:20:00'],
              dtype='datetime64[ns]', name='Fecha', freq=None)


df = df.loc['2017-05']
print (df)
                     D576972dc305aa  D576972dc32e9a  D576972dc3590a
Fecha                                                              
2017-05-01 00:10:00             0.0             0.0             0.1
2017-05-01 00:15:00             0.0             0.0             0.1

但您的解决方案也有效(如果matrizdf,我认为错字):

df=df[(df.index.month==5)&(df.index.year==2017)]
print (df)
                     D576972dc305aa  D576972dc32e9a  D576972dc3590a
Fecha                                                              
2017-05-01 00:10:00             0.0             0.0             0.1
2017-05-01 00:15:00             0.0             0.0             0.1