【发布时间】:2022-08-22 23:53:07
【问题描述】:
我有一段代码可以很好地在 Plan_Start 变量之间按顺序排列天数。
设置代码:
tx1 = pd.DataFrame({\'Patient\':[123,456,789,789,101],
\'Plan\':[\'Drug1\',\'Drug43\',\'Drug_abc\',\'Drug_xyz\',\'Drug_324\'],
\'Plan_Start\':[\'4/21/2021\',\'6/11/2021\',\'7/7/2021\',\'7/12/2021\',\'9/20/2021\'],
\'Plan_End\':[\'1/1/2030\',\'7/20/2021\',\'7/12/2022\',\'7/31/2021\',\'9/20/2022\']})
tx1[\'Plan_Start\'] = pd.to_datetime(tx1[\'Plan_Start\'])
tx1[\'Plan_End\'] = pd.to_datetime(tx1[\'Plan_End\'])
tx1
当您运行以下代码时:
tx1.set_index(\'Plan_Start\').groupby([\'Patient\']).resample(\'D\').ffill().reset_index(level=0, drop=True).reset_index()
但是,在 Plan_Start 变量可能具有相同日期的情况下(通常是这种情况,因为患者开始治疗并且必须在同一天结束治疗,否则无效),这将不起作用。
tx2 = pd.DataFrame({\'Patient\':[123,456,789,789,789,101],
\'Plan\':[\'Drug1\',\'Drug43\',\'Drug_abc\',\'Drug_xyz\',\'Drug_123\',\'Drug_324\'],
\'Plan_Start\':[\'4/21/2021\',\'6/11/2021\',\'7/7/2021\',\'7/7/2021\',\'7/17/2021\',\'9/20/2021\'],
\'Plan_End\':[\'1/1/2030\',\'7/20/2021\',\'7/7/2022\',\'7/17/2021\',\'07/31/2021\',\'9/20/2022\']})
tx2
现在这段代码:
tx2.set_index(\'Plan_Start\').groupby([\'Patient\']).resample(\'D\').ffill().reset_index(level=0, drop=True).reset_index()
现在抛出这个错误:
ValueError: cannot reindex a non-unique index with a method or limit
如何包含重复的第 2 行(对于 2021 年 7 月 7 日开始和 2021 年 7 月 7 日结束),然后从 2021 年 7 月 7 日 Plan_Start 重新开始计数到 2021 年 7 月 17 日的下一个 Plan_Start?