【问题标题】:days elapsed since certain date python pandas自某个日期以来经过的天数 python pandas
【发布时间】:2014-09-29 21:53:35
【问题描述】:

我正在尝试获取一个新列,其中包含某个日期以来的天数。我尝试了以下..但它给了我错误 TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'

import datetime

days_elapsed = []
since_day = datetime.date(2000,11,31)

for i in df.date:
    date = datetime.datetime.strptime(i, "%Y-%m-%d")
    elapsed = (date - since_day).days
    days_elapsed.append(elapsed)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您要减去两种不同类型的日期。您需要有两个日期或两个日期时间。将since_day 更改为日期时间可能更容易。

    since_day = datetime.date(2000,11,31,0,0)
    

    【讨论】:

      【解决方案2】:

      您确实使用了错误的日期类型,但完成您尝试做的事情的惯用方法如下。

      import datetime
      import pandas as pd
      
      since_day = pd.Timestamp('2000-11-31')
      
      df['Date'] = pd.to_datetime(df.date) #coerce date column to pandas timestamp
      df['elapsed'] = (date - since_day).days
      

      Pandas 旨在处理矢量化操作。尽量避免对列进行迭代,而是尝试对整个列执行操作。 API 将更有意义,并且您的代码将运行得更快,因为它使 pandas 能够将计算分派给底层的 numpy C 机器。

      【讨论】:

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