减去日期并返回 1 或 0

Subtracting dates and returning 1 or 0

我需要用整数减去 return 的日期,这样我就可以在另一个计算列中引用该整数。

原始“io”csv 文件提供列“ID”、“CreatedDate”和“IFSPDate”。我需要添加两个计算列。

计算列 1: “天”。我使用下面的代码减去计算列中的日期

io['CreatedDate'] = pd.to_datetime(io.CreatedDate)

io['IFSPDate'] = pd.to_datetime(io.IFSPDate)

for ind, row in io.iterrows():
    dataset.loc[ind,"Days to Table"] = row['CreatedDate'] - row['IFSPDate']

我得到这个结果

| ID | CreatedDate | IFSPDate   | Days             |
|----|-------------|------------|------------------|
| 1  | 2021-09-17  | 2021-09-17 | 0 days 00:00:00  |
| 2  | 2021-08-05  | 2021-01-13 | 204 days 00:00:00|
| 3  | 2021-09-03  | 2041-08-31 | 3 days 00:00:00  |
| 4  | 2021-09-16  | 2021-07-27 | 51 days 00:00:00 |

计算的第 2 列:“及时性”在这个专栏中,我想回答“单元格在天数列 <= 4”中的问题,然后 return 1 如果是如果没有则为 0。

问题: 使用当前代码,“天数”列的结果不是整数,因此我不能在“及时性”列中使用 <= 运算符来 return 0 或 1。

我想要的结果

| ID | CreatedDate | IFSPDate   | Days | Timeliness |
|----|-------------|------------|------|------------|
| 1  | 2021-09-17  | 2021-09-17 | 0    | 1          |
| 2  | 2021-08-05  | 2021-01-13 | 204  | 0          |
| 3  | 2021-09-03  | 2041-08-31 | 3    | 1          |
| 4  | 2021-09-16  | 2021-07-27 | 51   | 0          |

更新:

使用 io["Days"] = (io["Created_Date"] - io["IFSP_Date"]).dt.days returned 一个整数减去日期时

使用 io["Timeliness"] = np.where(io['Days'] <= 4, '1', '0') 创建新列并 returned一个 1 或 0。

无需迭代。这应该有效,但没有样本数据我无法确认:

io["Days"] = (io["CreatedDate"] - io["IFSPDate"]).dt.days
io["Timelines"] = (io["Days"] <= 4).astype(int)

我假设您的“创建”和“ifsp”列是正确的 Pandas Timestamp 或日期时间列。