正如问答中所解释的: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) # 我想选择 11h00 到 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
所以我的问题是,当我创建字符串时,它会自动填充日期与当前日期,并且我不知道如何仅查看小时来比较日期。
最佳答案
也许你可以做这样的事情:
# 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]
关于python - 如何在 pandas 数据框中选择时间段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649174/