嗨,我将日期差用作机器学习功能,分析了患者体重随时间的变化。
我成功地测试了一种方法,如下所示,但是问题是如何将其扩展到一个数据帧,在该数据帧中,我必须看到每个患者的日期差异,如上图所示。我想要得到的是包围的栏。因此,基本上,从中计算出日期差的基准日期每次都会针对新的患者姓名而更改,以便我们可以跟踪该患者随时间的体重变化情况!谢谢
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)
答案 0 :(得分:1)
您可以将transform
与first
一起使用
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))
答案 1 :(得分:1)
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