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