如何使用dataframe Between_time()函数

发布于 2021-01-29 14:11:05

我正在尝试使用该between_time功能。我已经将字符串类型time格式化为datetime

dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp'],format)

我定义了搜索开始时间和结束时间:

start = datetime.time(9,40,0)

end = datetime.time(10,00,0)

然后我打电话 dataset['TimeStamp'].between_time(start, end)

这是我得到的错误:

TypeError: Index must be DatetimeIndex

请如何解决。谢谢

关注者
0
被浏览
115
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    示例-我使用评论中的信息:

    import pandas as pd
    import StringIO
    import datetime
    
    data = '''time --- value
    1984-12-12 14:08:00 --- 1
    1984-12-12 14:25:00 --- 2
    1984-12-12 14:47:00 --- 4
    1984-12-12 16:37:00 --- 3
    1984-12-12 16:37:00 --- 9
    1984-12-12 16:37:00 --- 5
    1984-12-12 17:52:00 --- 3
    1984-12-12 17:52:00 --- 7
    1984-12-12 19:29:00 --- 2'''
    
    #------------------------------------------------
    
    df = pd.read_csv(StringIO.StringIO(data), sep=' --- ')
    
    df['time'] = pd.DatetimeIndex(df['time'])
    
    print "\nDataFrame:\n", df
    
    print '\nIndex:', type(df.index)
    
    #------------------------------------------------
    
    df.set_index(keys='time', inplace=True)
    
    print "\nDataFrame:\n", df
    
    print '\nIndex:', type(df.index)
    
    #------------------------------------------------
    
    start = datetime.time(14,50,0)
    end = datetime.time(18,0,0)
    
    print "\nResult:\n", df['value'].between_time(start, end)
    

    结果:

    DataFrame:
                     time  value
    0 1984-12-12 14:08:00      1
    1 1984-12-12 14:25:00      2
    2 1984-12-12 14:47:00      4
    3 1984-12-12 16:37:00      3
    4 1984-12-12 16:37:00      9
    5 1984-12-12 16:37:00      5
    6 1984-12-12 17:52:00      3
    7 1984-12-12 17:52:00      7
    8 1984-12-12 19:29:00      2
    
    Index: <class 'pandas.core.index.Int64Index'>
    
    DataFrame:
                         value
    time                      
    1984-12-12 14:08:00      1
    1984-12-12 14:25:00      2
    1984-12-12 14:47:00      4
    1984-12-12 16:37:00      3
    1984-12-12 16:37:00      9
    1984-12-12 16:37:00      5
    1984-12-12 17:52:00      3
    1984-12-12 17:52:00      7
    1984-12-12 19:29:00      2
    
    Index: <class 'pandas.tseries.index.DatetimeIndex'>
    
    Result:
    time
    1984-12-12 16:37:00    3
    1984-12-12 16:37:00    9
    1984-12-12 16:37:00    5
    1984-12-12 17:52:00    3
    1984-12-12 17:52:00    7
    Name: value, dtype: int64
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看