【问题标题】:Filter a dataframe based on today's date and other condition in pandas根据熊猫中的今天日期和其他条件过滤数据框
【发布时间】:2020-04-29 21:45:55
【问题描述】:

我有一个如下图所示的数据框

Date                        Status                    Price
2019-10-07 10:24:51         Yes                       20
2019-10-07 10:27:56         No                        50
2020-01-13 12:27:54         No                        40
2020-01-13 10:27:50         Yes                       80
2020-01-13 12:28:52         Yes                       45

从以上数据中,我想根据今天的日期进行过滤,以日期和状态 == 是的。

注意:我必须根据今天的日期时间每天运行。

预期输出:

Date                        Status                    Price
2020-01-13 10:27:50         Yes                       80
2020-01-13 12:28:52         Yes                       45

【问题讨论】:

    标签: python pandas datetime pandas-groupby


    【解决方案1】:

    使用boolean indexingSeries.dt.date 创建的比较日期与今天dates 和通过比较Yes 值的链掩码:

    df['Date'] = pd.to_datetime(df['Date'])
    
    df = df[df['Date'].dt.date.eq(pd.to_datetime('now').date()) & df['Status'].eq('Yes')]
    
    #in last versions of pandas is possible compare dates with today datime
    df = df[df['Date'].dt.date.eq(pd.to_datetime('now')) & df['Status'].eq('Yes')]
    print (df)
                     Date Status  Price
    3 2020-01-13 10:27:50    Yes     80
    4 2020-01-13 12:28:52    Yes     45
    

    详情

    print (pd.to_datetime('now'))
    2020-01-13 07:42:02.592142
    
    print (pd.to_datetime('now').date())
    2020-01-13
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      #df['Date']=pd.to_datetime(df['Date']) if needed convert to datetime first
      df[df['Date'].dt.date.eq(pd.to_datetime('today')) & df['Status'].eq('Yes')]
      

                       Date Status  Price
      3 2020-01-13 10:27:50    Yes     80
      4 2020-01-13 12:28:52    Yes     45
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-09
        • 2020-05-05
        • 2013-06-09
        • 1970-01-01
        • 2020-05-12
        • 2018-12-22
        • 2021-08-19
        • 2017-11-20
        相关资源
        最近更新 更多