Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算经过的天数和百分比变化_Python_Pandas - Fatal编程技术网

Python 计算经过的天数和百分比变化

Python 计算经过的天数和百分比变化,python,pandas,Python,Pandas,我有一个带有层次索引ID的df&日期和度量值M。 我想在我的df中增加两项新措施;第一个是测量值M相对于先前观测值的百分比变化,第二个是经过的天数。 ID窗口内的所有内容,即每个ID内的第一个观察值对于两个新度量值都为零一种方法是按ID分组,获得所需的差异并缝合一个新的数据帧。欢迎就如何做得更好和/或到位提出建议 new_df = pd.DataFrame() grouped = your_df.groupby('ID') for grp_id in grouped.groups: gr

我有一个带有层次索引ID的df&日期和度量值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)
以及从时间索引中获取已用天数的函数:

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