计算基线日期更改的熊猫数据框行的日期差

时间:2019-01-25 17:34:31

标签: python pandas date-difference

嗨,我将日期差用作机器学习功能,分析了患者体重随时间的变化。

enter image description here

我成功地测试了一种方法,如下所示,但是问题是如何将其扩展到一个数据帧,在该数据帧中,我必须看到每个患者的日期差异,如上图所示。我想要得到的是包围的栏。因此,基本上,从中计算出日期差的基准日期每次都会针对新的患者姓名而更改,以便我们可以跟踪该患者随时间的体重变化情况!谢谢

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)

2 个答案:

答案 0 :(得分: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))

答案 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