2014-03-24 91 views
1

我有一個帶分層索引的df(ID &日期)和度量值M. 我想向我的df添加兩個新的度量值;第一個是先前觀察到的測量值M的百分比變化,第二個是過去的天數。 所有在ID的「窗口」內(即每個ID內的第一次觀察對於兩個新測量都將爲零)熊貓計算已經過去的天數和變化百分比

回答

0

一種方法是按ID進行分組,獲得您想要的差異並縫合新的數據幀。有關如何更好和/或到位的建議值得歡迎。

new_df = pd.DataFrame() 
grouped = your_df.groupby('ID') 
for grp_id in grouped.groups: 
    grp = grouped.get_group(grp_id) 
    grp["diff"] = np.concatenate([np.array([0]),np.diff(grp['M'].values)]) # get the differences of M 
    grp["days_elapsed"] = np.concatenate([np.array([None]),days_elapsed(grp.index.values)]) # 

    new_df = new_df.append(grp) 

和函數來獲取經過幾天從大熊貓TimeIndex:

def days_elapsed(l): 
res= [] 
print l 
for x in range(1,len(l)): 

    res.append((l[x]-l[x-1])/np.timedelta64(1, 'D')) 

return res