我正在尝试为我的数据集检索与特定月份相对应的索引。
这是为了在训练测试数据拆分后跟踪用于训练神经网络的索引线。我想知道我的预测对应的日期。
我尝试了以下操作,其中我检索了与特定日期相对应的索引。有没有办法在一天中使用类似*的参数,这样我就可以检索1个月了
target_date = pd.to_datetime('2013-10-24').date()
metadata.loc[metadata.Starttime.dt.date == target_date, :].index.values
给出
array([0, 1], dtype=int64)
我希望这样:
array([10, 14, 17], dtype=int64)
其中10、14、17是与我搜索的月份相对应的索引,而不是特定的一天
示例:
installation = range(0,5)
equipment = range(0,5)
tag_name = range(0,5)
start_time = ['2013-10-15 02:30:24.670', '2013-9-15 02:30:24.670', '2013-8-15 02:30:24.670', '2013-7-15 02:30:24.670', '2013-6-15 02:30:24.670']
dic = {'Installation':installation,'Equipment':equipment,'Tag name':tag_name,'Starttime':start_time,}
metadata = pd.DataFrame(dic) #Create the dataframe
metadata['Starttime'] = pd.to_datetime(metadata['Starttime'])
target_date = pd.to_datetime('2013-10-15').date()
metadata.loc[metadata.Starttime.dt.date == target_date, :].index.values
答案 0 :(得分:0)
您可以更改过滤条件以获取整个月份:
metadata.loc[
(metadata.Starttime.dt.month == 10) &
(metadata.Starttime.dt.year == 2013)
].index.values
答案 1 :(得分:0)
我认为您需要比较Series.dt.to_period
为列和标量Timestamp.to_period
创建的月份值:
installation = range(0,5)
equipment = range(0,5)
tag_name = range(0,5)
#change first 3 datetimes for same months
start_time = ['2013-10-15 02:30:24.670', '2013-10-16 02:30:24.670', '2013-10-17 02:30:24.670',
'2013-7-15 02:30:24.670', '2013-6-15 02:30:24.670']
dic = {'Installation':installation,'Equipment':equipment,
'Tag name':tag_name,'Starttime':start_time}
metadata = pd.DataFrame(dic) #Create the dataframe
metadata['Starttime'] = pd.to_datetime(metadata['Starttime'])
print (metadata)
Installation Equipment Tag name Starttime
0 0 0 0 2013-10-15 02:30:24.670
1 1 1 1 2013-10-16 02:30:24.670
2 2 2 2 2013-10-17 02:30:24.670
3 3 3 3 2013-07-15 02:30:24.670
4 4 4 4 2013-06-15 02:30:24.670
target_date = pd.to_datetime('2013-10-15').to_period('m')
idx = metadata.loc[metadata.Starttime.dt.to_period('m') == target_date].index.values
print (idx)
[0 1 2]