我正试图在某个日期之后的几天内获得一个新专栏。我尝试了以下..但它给了我错误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)
答案 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机制。