2016-12-24 89 views
2

當試圖找到兩個日期之間的差異在周:Python熊貓:兩週之間的差異?

import pandas as pd 

def diff(start, end): 
    x = millis(end) - millis(start) 
    return x/(1000 * 60 * 60 * 24 * 7 * 1000) 

def millis(s): 
    return pd.to_datetime(s).to_datetime64() 

diff("2013-06-10","2013-06-16") 

結果我得到:

Out[15]: numpy.timedelta64(857,'ns') 

這顯然是錯誤的。問題:

  1. 如何獲得周而非納秒的差異四捨五入到整體值?

  2. 如何從'numpy.timedelta64'對象中獲取值?

回答

3

我想你可以通過numpy的標量將轉換爲int

def diff(start, end): 
    x = pd.to_datetime(end) - pd.to_datetime(start) 
    return int(x/np.timedelta64(1, 'W')) 

print (diff("2013-06-10","2013-06-16")) 
0 
print (diff("2013-06-10","2013-06-26")) 
2 

frequency conversion

0

這裏有一個簡單的解決辦法:

def diff(start, end): 
    x = millis(end) - millis(start) 
    return np.ceil(x.astype(int)/(7*86400*1e9)) 

最主要的是它在操作之前刪除單元(納秒)。

P.S .:當不返回毫秒時,請不要調用您的函數millis()