【问题标题】:Filter Dataframe by minute forp multiple days多天按分钟过滤数据帧
【发布时间】:2019-10-24 11:25:16
【问题描述】:

我有一个数据框,其中包含跨越多天的分钟数据,我想以这样一种方式进行过滤,以便我每天都获得以下时间: 09:31

有没有简单的方法来做到这一点?在将日期和时间分成单独的列之后,我想按照 slice(None) 的方式做一些事情,但我认为可能有更简单的方法。

【问题讨论】:

    标签: python pandas indexing slice


    【解决方案1】:

    我认为at_time() 是你想要的:

    import pandas as pd
    
    index = pd.date_range("2019-08-01 00:00", "2019-08-11 00:00", freq="1min")
    df = pd.DataFrame(np.random.randn(len(index), 3), index=index, columns=["a", "b", "c"])
    
    df.at_time("09:31")
    

    【讨论】:

    • 从来不知道at_time :)
    • 我收到一条错误消息:TypeError: Index must be DatetimeIndex,因为我有一个多索引,其中 level=0 是这种格式的日期:
    • @Tartaglia,您可以通过df.index.levels[0].indexer_at_time("09:31") 获取整数位置,然后使用df.iloc[] 获取行。
    • 谢谢,这是一个不错的方法。我也能够完成这项工作:df=df.unstack().at_time("09:31").stack()
    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2011-08-28
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多