给出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 \
答案 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
但您的解决方案也有效(如果matriz
为df
,我认为错字):
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