正如Q& A中的解释:python pandas dataframe slicing by date conditions我想在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) # I want to select items between 11h00 and 11h30
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
所以我的问题是,当我创建字符串时,它会自动填充当天的日期,而且我不知道如何比较日期只看小时。
答案 0 :(得分: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]