如何在pandas数据框中选择时间段?
在这个问答中提到:使用Python的pandas库按日期条件切片数据框,我想在一个pandas数据框中选择一段时间。给出的答案对于按天切片是有效的,但如果我只想查看小时,就不行了。
下面是我想做的事情的一个例子:
2013-12-12 10:51:51
2013-12-12 11:11:01
2013-12-12 11:19:22
2013-12-12 11:36:48
2013-12-12 11:36:48
hour_frame(df, 11,00,00,11,30,00) # 我想选择11点到11点30之间的项目
2013-12-12 11:11:01
2013-12-12 11:19:22
我尝试使用答案中提供的代码(参考上面的链接)
def hour_frame(df,start_hour,start_minute,end_hour,end_minute):
start_time = pd.Timestamp('%d:%d:%d' % (start_hour, start_minute, 0)).strftime('%Y-%m-%d %H:%M:%S')
end_time = pd.Timestamp('%d:%d:%d' % (end_hour, end_minute, 0)).strftime('%Y-%m-%d %H:%M:%S')
return df.ix[start_time:end_time]
但是它返回了一个空的数据框,我查看了start_time
和end_time
的值,它们是:
start_time = 2014-07-09 11:00:00
end_time = 2014-07-09 11:30:00
所以我的问题是,当我创建字符串时,它会自动填充当前日期,而我不知道怎么只看小时来比较日期。
1 个回答
3
也许你可以试试这样做:
# create a new column with only time from your date column
df['time'] = df['date'].apply(lambda x: x.time())
#filter based on the time column
mask = (df['time'] > datetime.time(11,00)) & (df['time'] < datetime.time(11,30))
df = df[mask]