2017-03-15 39 views
5

我認爲這應該很簡單,但是我所看到的技術都是迭代數據幀日期字段以確定兩個日期之間的差異。我遇到了麻煩。我熟悉MSSQL DATEDIFF,所以我認爲Pandas datetime會有類似的東西。我也許這樣做,但我錯過了它。熊貓 - 兩個日期之間的月數

是否有一個Pandonic方法來確定月份數作爲兩個日期之間的整數(日期時間),而無需迭代?請記住,有可能有數百萬行,因此性能是一個考慮因素。

日期是datetime對象,結果想這一點 - 新塔中月:

Date1   Date2   Months 
2016-04-07  2017-02-01 11 
2017-02-01  2017-03-05 1 

回答

18

這裏是我的朋友:

df['nb_months'] = (df.date2 - df.date1)/ np.timedelta64(1, 'M')

+0

我得到一個浮動當運行這個。這是你所期望的? – shavar

+1

只是轉換爲帶有astype('int')bro的整數 –

+1

df ['month'] =((df.date2 - df.date1)/ np.timedelta64(1,'M'))。astype(int)招。快速完成。多謝兄弟。 – shavar

5
df.assign(
    Months= 
    (df.Date2.dt.year - df.Date1.dt.year) * 12 + 
    (df.Date2.dt.month - df.Date1.dt.month) 
) 

     Date1  Date2 Months 
0 2016-04-07 2017-02-01  10 
1 2017-02-01 2017-03-05  1 
+0

這個方法也適用。我得到10個和1個月。與@諾比解決方案,我得到9和1.所以這一個是包容性的。根據我對任何特定項目的需求,這兩個都非常有用。謝謝。 – shavar

+0

我爲你提供了體育道德:) –

+0

@諾比對我來說聽起來不錯。現在我知道你是一個很好的運動...... – piRSquared

相關問題