2016-07-29 225 views
0

我有一個數據幀,看起來像這樣:奇怪的結果

df = pd.DataFrame({'date_sent': ['06/11/2015', '', 'Not required', '06/11/2015'], 
        'date_published': ['06/11/2015', '', '', '23/01/2016']}) 

我想計算每行中的兩個日期之間的差別,所以首先我將字符串轉換爲Date對象:

df.date_published = pd.to_datetime(df.date_published.str.replace('Not required', '')) 
df.date_sent = pd.to_datetime(df.date_sent.str.replace('Not required', '')) 

然後我減去從另一個:

df['delay'] = df.date_published - df.date_sent 

但是這給了我奇怪的結果 - 我t在06/11/2015和23/01/2016之間沒有226天:

df 
    date_published date_sent delay 
0  2015-06-11 2015-06-11 0 days 
1   NaT  NaT  NaT 
2   NaT  NaT  NaT 
3  2016-01-23 2015-06-11 226 days 

我在做什麼錯?我正在使用熊貓v0.18。

+0

啊 - 我想我的日期格式不正確?我試過'df.date_published = pd.to_datetime(df.date_published.str.replace('Not required',''),format ='%d /%m /%Y')'但是出現錯誤。 – Richard

+0

我不能用熊貓重現決賽桌18.1 ...你不會將'06/11/2015'等轉換成datatime。只有「不需要」 – Merlin

回答

0

看看這是否有幫助。

print pd.to_datetime('06/11/2016', dayfirst =True, format='%d/%m/%Y', errors = 'ignore') 
    print pd.to_datetime('06/11/2016', format='%m/%d/%Y', errors = 'ignore') 

2016-11-06 00:00:00 
2016-06-11 00:00:00 
+0

如果正確,你可以upvote? – Merlin

0

這兩天之間恰好是226天。

+1

不是如果你是英國人:)我需要弄清楚如何修復日期格式。 – Richard