减去日期并返回 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
或日期时间列。
我需要用整数减去 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
或日期时间列。