2017-04-13 94 views
-2

我想遍歷日期列表,以獲取日期和之前日期之間的差異(例如4/13和3/13之間的差異)。遍歷索引和前一個項目

我正在尋找一個for循環能夠掃描thorugh夫婦日期

import pandas as pd 
import numpy as np 
raw_data = {'date' : pd.to_datetime(pd.Series(['2017-03-30','2017-03-31','2017-04-03','2017-04-04'])), 
'age': [10,np.nan,50,30]} 
df1 = pd.DataFrame(raw_data, columns = ['date','age']) 

df1 

輸入數據

df2=df1.T 


df2['new']=df2.iloc[:,3]-df2.iloc[:,2] 

desidered結果:

raw_data = {'date' : pd.to_datetime(pd.Series(['2017-03-30','2017-03-31','2017-04-03','2017-04-04'])),'age': [10,np.nan,50,30], 
'diff': [10,-10,50,-20]} 
output = pd.DataFrame(raw_data, columns = ['date','age','diff']) 

output 
+0

我很困惑! – piRSquared

+0

如果您運行代碼直到df2,您會看到「新」是2017-04-04和2017-04-03之間的年齡差異。我想做一個反向循環,以回到之前的日期,例如夫妻,比較2017-03-31和2017-03-30一個循環 – progster

+0

我真的很難理解你的問題。你能否給出一個清晰的例子說明你的投入,你的邏輯和你想要的產出? – Allen

回答

0

你不需要一個循環,如果你想知道日期之間的差異。 也許你應該這樣做:

df1['difference'] = (df1['date'] - df1['date'].shift(1)).apply(lambda x: pd.NaT if x is pd.NaT else x.days) 

或本:

df1['difference'] = (df1['date'] - df1['date'].shift(-1)).apply(lambda x: pd.NaT if x is pd.NaT else x.days) 
+0

年齡之間的差異,不同日期之間的差異,但是年齡,請看看desidered resutls,df3 – progster