【发布时间】:2021-11-13 19:20:53
【问题描述】:
我需要用整数减去日期作为返回值,这样我就可以在另一个计算列中引用该整数。
原始“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 列:“及时性” 在本列中,我想回答问题“单元格在天数列
问题: 使用当前代码,“Days”列的结果不是整数,所以我不能在“Timeliness”列中使用
我想要的结果
| 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 在减去日期时返回一个整数
使用 io["Timeliness"] = np.where(io['Days']
【问题讨论】:
-
您可以将减法的结果转换为时间戳,然后确定它是否有足够的毫秒数以使其超过 4 天
-
ID 3 的 IFSPDate 应该是 2041 还是拼写错误?如果它应该是 2041 年,那么这将变得相当棘手。某年有闰年,天数应该如何计算?
标签: python-3.x pandas dataframe datetime timedelta