我有一个以日期时间为索引的熊猫数据框(如下所示)
['2018-02-13 11:55:00', '2018-02-13 12:00:00',
'2018-02-13 12:05:00', '2018-02-13 12:10:00',
'2018-02-13 12:15:00', '2018-02-13 12:20:00',
'2018-02-13 12:25:00', '2018-02-13 12:30:00',
'2018-02-13 12:35:00', '2018-02-13 12:40:00',
...
'2018-02-19 04:40:00', '2018-02-19 04:45:00',
'2018-02-19 04:50:00', '2018-02-19 05:05:00',
'2018-02-19 05:10:00', '2018-02-19 05:15:00',
'2018-02-19 05:20:00', '2018-02-19 05:25:00',
'2018-02-19 05:30:00', '2018-02-19 05:40:00'])
例如,我想过滤所有时间为12:00:00的值,因此我正在寻找
的返回值。 ['2018-02-13 12:00:00','2018-02-14 12:00:00','2018-02-15 12:00:00','2018-02-16 12:00:00','2018-02-17 12:00:00', '2018-02-18 12:00:00']
请问如何执行这种索引编制?
答案 0 :(得分:6)
如果要查找与12:00 PM中午相对应的条目,仅使用hour属性是不够的。而是将您的索引/日期范围与datetime
对象进行比较:
dt = pd.date_range('2018-02-13', '2018-02-19', freq='1h')
dt[dt.time == datetime.time(12)]
DatetimeIndex(['2018-02-13 12:00:00', '2018-02-14 12:00:00',
'2018-02-15 12:00:00', '2018-02-16 12:00:00',
'2018-02-17 12:00:00', '2018-02-18 12:00:00'],
dtype='datetime64[ns]', freq=None)
如果要引入分钟或秒的组成部分,只需将datetime.time(12)
更改为datetime.time(12, 5)
以便12:05:00 PM,或将datetime.time(12, 5, 30)
更改为12:05:30 PM,依此类推
答案 1 :(得分:2)
您可以使用strftime进行过滤
df[df.index.strftime('%H:%M:%S') == '12:00:00']