2017-01-24 20 views
1

我試圖計算相同ID內連續日期時間值之間的天數差異。計算相同ID組內連續pandas日期時間值之間的差異天數

這裏是我的數據幀和代碼:

d = {'ID': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c'], 
'date': ['10/1/2010','10/1/2010','10/10/2010','10/10/2010','1/1/2001','3/1/2001','3/1/2001','6/1/2001','1/1/1990','3/1/1990','6/1/1990']} 

df = pd.DataFrame(d) 
df['date'] = pd.to_datetime(df['date']) 
df['Days'] = df.groupby('ID')['date'].diff().fillna('') 
df 

不過,我得到「0天,當連續的日期是彼此相同。

例如,有兩個'2010-10-10'是ID'a'的成員;第一行'2010-10-10'的值爲'9天',但第二行返回'0天'。我的目標是編寫一個代碼,以便兩者都有'9天'。

回答

1

您可以取代0,然後做一個向前填充:

import numpy as np 
import pandas as pd 
df['Days'] = (df.groupby('ID', group_keys=False) 
       .apply(lambda g: g['date'].diff().replace(0, np.nan).ffill())) 
df 

enter image description here

+0

非常感謝您的合作! – comproch

相關問題