【问题标题】:Comparing today date with date in dataframe将今天的日期与数据框中的日期进行比较
【发布时间】:2019-03-12 05:00:23
【问题描述】:

将今天的日期与数据框中的日期进行比较 样本数据

id        date
1        1/2/2018
2        1/5/2019
3        5/3/2018
4        23/11/2018

期望的输出

id        date
2        1/5/2019
4        23/11/2018

我当前的代码

dfdateList = pd.DataFrame()
dfDate= self.df[["id", "date"]]
today = datetime.datetime.now()
today = today.strftime("%d/%m/%Y").lstrip("0").replace(" 0", "")
expList = []
for dates in dfDate["date"]:
    if dates <= today:
        expList.append(dates)

dfdateList = pd.DataFrame(expList)   

目前,尽管有条件,但我的代码正在打印每一行,有人可以指导我吗?谢谢

【问题讨论】:

    标签: python python-2.7 pandas datetime dataframe


    【解决方案1】:

    Pandas 对日期时间的一大类操作具有原生支持,因此这里的一个解决方案是使用 pd.to_datetime 将日期从字符串转换为 pandas 的日期时间表示 pd.Timestamp,然后只需创建一个基于掩码当前日期:

    df['date'] = pd.to_datetime(df['date'], dayfirst=True)
    df[df['date'] > pd.Timestamp.now()]
    

    例如:

    In [34]: df['date'] = pd.to_datetime(df['date'], dayfirst=True)
    
    In [36]: df
    Out[36]:
       id       date
    0   1 2018-02-01
    1   2 2019-05-01
    2   3 2018-03-05
    3   4 2018-11-23
    
    In [37]: df[df['date'] > pd.Timestamp.now()]
    Out[37]:
       id       date
    1   2 2019-05-01
    3   4 2018-11-23
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多