计算具有更改基线日期的 pandas 数据框行的日期差异

Calculating date difference for pandas dataframe rows with changing baseline dates

您好,我正在使用日期差异作为机器学习功能,分析患者的体重如何随时间变化。

我成功地测试了一种方法来做到这一点,如下所示,但问题是如何将其扩展到数据框,我必须在其中查看每个患者的日期差异,如上图所示。包围的列是我想要得到的。所以基本上每次新患者姓名的计算日期差异的基线日期都会改变,这样我们就可以跟踪该患者随时间的体重进展!谢谢

s='17/6/2016'
s1='22/6/16'
a=pd.to_datetime(s,infer_datetime_format=True)
b=pd.to_datetime(s1,infer_datetime_format=True)
e=b.date()-a.date()
str(e)
str(e)[0:2]

我想应该是这样的,(但我不确定具体怎么做):

def f(row):
    # some logic here 

    return val

df['Datediff'] = df.apply(f, axis=1)

您可以将 transformfirst

一起使用
 df['Datediff'] = df['Date'] - df1.groupby('Name')['Date'].transform('first')

另一个解决方案可以使用 cumsum

 df['Datediff'] = df.groupby('Name')['Date'].apply(lambda x:x.diff().cumsum().fillna(0))
df["Datediff"] = df.groupby("Name")["Date"].diff().fillna(0)/ np.timedelta64(1, 'D')
df["Datediff"]

0      0.0
1     12.0
2     14.0
3     66.0
4     23.0
5      0.0
6     10.0
7     15.0
8     14.0
9      0.0
10    14.0
Name: Datediff, dtype: float64