所以,这是我的数据框。
PatientNumber QT Answer Answerdate DiagnosisDate
1 1 transferring No 2017-03-03 2018-05-03
2 1 preparing food No 2017-03-03 2018-05-03
3 1 medications Yes 2017-03-03 2018-05-03
4 2 transferring No 2011-05-10 2012-05-04
5 2 preparing food No 2011-05-10 2012-05-04
6 2 medications No 2011-05-10 2012-05-04
7 2 transferring Yes 2011-15-03 2012-05-04
8 2 preparing food Yes 2011-15-03 2012-05-04
9 2 medications No 2011-15-03 2012-05-04
10 2 transferring Yes 2010-15-12 2012-05-04
11 2 preparing food No 2010-15-12 2012-05-04
12 2 medications No 2010-15-12 2012-05-04
13 2 transferring Yes 2009-10-10 2012-05-04
14 2 preparing food No 2009-10-10 2012-05-04
15 2 medications No 2009-10-10 2012-05-04
16 3 medications No 2008-10-10 2010-07-04
我刚刚找到一个与我的问题相关的链接here https://stackoverflow.com/questions/48454189/pandas-date-range-for-six-monthly-values它没有得到任何正确的答案。
一些解释:对于每个患者编号,诊断日期都是唯一的。回答日期是他们填写问题的几次。
但我想做的是:?
我的目标是从DiagnosisDate
every six month
,并将其标记到一列上as the first 6 month record
。在该列中,我们应该保存那六个月(前六个月、第二个月、第三个月……)。
例如对于这个数据框,DiagnosisDate
for PatientNumber=1
is 2018-05-03
所以它应该从那个时候开始6 month
. the first 6 month
is 2017-27-11
由于最大的 AnswerDate 不属于该日期,因此不会被标记为first six month
。
如果第一个answerdate
属于该日期,它将被标记为first 6 month
.
so here PatientNumber=1
got 3
在专栏中6month
,因为当我们从diagnosisdate
6 month
回来,answerdate
属于那个6 month
稍后有时间。
所以这个数据框的输出将是:
PatientNumber QT Answer Answerdate DiagnosisDate 6month
1 1 transferring No 2017-03-03 2018-05-03 3
2 1 preparing food No 2017-03-03 2018-05-03 3
3 1 medications Yes 2017-03-03 2018-05-03 3
4 2 transferring No 2011-05-10 2012-05-04 1
5 2 preparing food No 2011-05-10 2012-05-04 1
6 2 medications No 2011-05-10 2012-05-04 1
7 2 transferring Yes 2011-15-04 2012-05-04 2
8 2 preparing food Yes 2011-15-04 2012-05-04 2
9 2 medications No 2011-15-04 2012-05-04 2
10 2 transferring Yes 2010-15-12 2012-05-04 3
11 2 preparing food No 2010-15-12 2012-05-04 3
12 2 medications No 2010-15-12 2012-05-04 3
13 2 transferring Yes 2009-10-10 2012-05-04 5
14 2 preparing food No 2009-10-10 2012-05-04 5
15 2 medications No 2009-10-10 2012-05-04 5
16 3 medications No 2008-10-10 2010-07-04 4
对于 PatientNumber =2,将从DiagnosisDate =2012-05-04
然后回到 6 个月。它将是2011-11-04
.
我应用了这个:
data['6month'] = pd.date_range(end=data['diagnosisdate'],periods=2, freq='6M',closed='left')
首先它只关心月份,所以计算大约不准确,
我找不到一种方法来提及 6 个月的数字,就像我在上面的数据框中提到的那样(在第 6 个月列中,我的意思是 1 2,...而不是日期。
因此根据数据,我们可能会在列中看到6month
的数字来自1...10
(考虑诊断前 5 年)
很长的故事。希望有人能花点时间:)。
另外,我需要将整个专栏的结果保持原样。