2014-09-29 43 views
0

我試圖從某個日期開始獲得一個新的列。我嘗試以下..但它給我的錯誤類型錯誤:不支持的操作類型爲 - :「datetime.datetime」和「datetime.date」特定日期過後的日子python pandas

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) 

回答

1

你減去兩種不同類型的日期。你需要有兩個日期或兩個日期時間。將since_day更改爲日期時間可能更容易。

since_day = datetime.date(2000,11,31,0,0) 
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 

熊貓設計用於矢量化操作。嘗試並避免遍歷列,而是嘗試在整列上執行操作。 API將更有意義,並且您的代碼將運行得更快,因爲它使大熊貓能夠將計算分派到底層numpy C機器。