计算具有更改基线日期的 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)
您可以将 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))
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
您好,我正在使用日期差异作为机器学习功能,分析患者的体重如何随时间变化。
我成功地测试了一种方法来做到这一点,如下所示,但问题是如何将其扩展到数据框,我必须在其中查看每个患者的日期差异,如上图所示。包围的列是我想要得到的。所以基本上每次新患者姓名的计算日期差异的基线日期都会改变,这样我们就可以跟踪该患者随时间的体重进展!谢谢
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)
您可以将 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))
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