【问题标题】:How selected time period in a pandas dataframe?如何在熊猫数据框中选择时间段?
【发布时间】:2014-08-30 05:06:35
【问题描述】:

正如问答中所解释的那样:python pandas dataframe slicing by date conditions 我想在熊猫数据框中选择时间段。给出的答案非常适合按天切片,但如果您不想只查看小时数,则将无法正常工作。

这是我想做的一个例子:

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

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

【问题讨论】:

    标签: python time pandas dataframe


    【解决方案1】:

    也许你可以这样做:

    # 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2018-07-03
      相关资源
      最近更新 更多