从某些日期python pandas开始的几天

时间:2014-09-29 21:53:36

标签: python pandas

我正试图在某个日期之后的几天内获得一个新专栏。我尝试了以下..但它给了我错误TypeError:不支持的操作数类型 - :'datetime.datetime'和'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)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您确实使用了错误的日期类型,但实现您尝试执行的操作的惯用方法如下:

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机制。