【问题标题】:How to select pandas dataframe rows between two dates without knowing the exact time如何在不知道确切时间的情况下选择两个日期之间的熊猫数据框行
【发布时间】:2021-04-24 15:50:22
【问题描述】:

我在这里有一个数据框的 sn-p

  TIME                Value1 Value2
0 2014-10-02 12:45:03   5      6
1 2014-10-02 12:45:05   6      7
2 2014-10-02 12:45:08   3      5
3 2014-10-02 12:45:09   7      4
.....................   ...    ...
45 2014-11-03 00:51:09   7     8

现在,我想获取 2014-10-02 和 2014-11-02 之间的所有数据框行,而不知道第二个确切的时间。我尝试了如下所示的这种方法,但我得到了 0 行。

start_date = pd.to_datetime('2014-10-02 00:00:01')
end_date = pd.to_datetime('2014-11-02 00:00:01')
df.loc[(df['TIME'] > start_date) & (df['TIME'] < end_date)]

但是,当我为开始日期和结束日期输入一个确切的日期时间值(例如 '2014-10-02 12:45:03')时,我得到了输出。数据有数百万行,我不可能找出开始日期和结束日期的确切时间。我只需要获取两个日期之间的行。

【问题讨论】:

    标签: python pandas dataframe datetime


    【解决方案1】:

    您可以尝试布尔掩码:

    df.loc[(df['TIME'].dt.date > start_date.date()) & (df['TIME'].dt.date< end_date,date())]
    

    您还可以使用布尔掩码和between() 方法:

    df[df['TIME'].dt.date.between(start_date.date(),end_date.date())]
    

    【讨论】:

    • 感谢您的解决方案,很抱歉回复晚了。我通过将时间设置为更适合我的工作的索引来解决这个问题。无论如何,谢谢你的解决方案。
    猜你喜欢
    • 2021-12-14
    • 2018-10-31
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多