【发布时间】:2020-06-03 22:47:22
【问题描述】:
我有一个如下图所示的数据框
ID CONSTRUCTION_DATE START_DATE END_DATE CANCELLED_DATE
1 2016-02-06 2016-02-26 2017-02-26 NaT
1 2016-02-06 2017-03-27 2018-02-26 2017-05-22
1 2016-02-06 2017-08-27 2019-02-26 2017-10-21
1 2016-02-06 2018-07-27 2021-02-26 NaT
2 2016-05-06 2017-03-27 2018-02-26 NaT
2 2016-05-06 2018-08-27 2019-02-26 NaT
以上数据必须根据 ID 和 START_DATE 排序。
从上面的数据框我想准备下面的数据框
ID D_from_C_to_first_S_D T_D_V_aft_c T_D_V_w_cancel N_of_cancel Lst_END_DATE_to_today
1 20 376 29 2 After_today
1 325 NaN 182 0 358
在哪里
CANCELLED_DATE = NaT 表示合同未取消
D_from_C_to_first_S_D = 从 CONSTRUCTION_DATE 到第一个 START_DATE 的天数。
T_D_V_aft_c = 取消后空闲的总天数(对于 ID = 1,两个取消日期,97+279 = 376)
T_D_V_w_cancel = 未取消的空置天数(只需求上一个 END_DATE 与下一个 START_DATE 的差值之和。
Lst_END_DATE_to_today = 从上一个结束日期到今天的天数。
【问题讨论】:
-
97在T_D_V_aft_c中的计数如何? -
@jezrael,ID = 1,它的第一个 CANCELLED_DATE = 2017-05-22,从那到下一个 START_DATE (2017-08-27) 的天数
-
对于
T_D_V_w_cancel只计算正差异?因为我得到了第一组a-29, -183, -214 -
@jezrael 我们应该忽略我们有 CANCELLED_DATE 的行。只考虑我们没有 CANCELLED_DATE 的行
-
不容易回答,请检查是否按您的需要工作。
标签: pandas pandas-groupby