如何在pandas数据框中选择时间段?

时间:2014-07-09 08:49:57

标签: python time pandas dataframe

正如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_timeend_time的值,它们是:

start_time = 2014-07-09 11:00:00
end_time =   2014-07-09 11:30:00

所以我的问题是,当我创建字符串时,它会自动填充当天的日期,而且我不知道如何比较日期只看小时。

1 个答案:

答案 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]