【问题标题】:Subtracting dates and returning 1 or 0减去日期并返回 1 或 0
【发布时间】: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


【解决方案1】:

无需重复。这应该可行,但没有样本数据我无法确认:

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

我假设您的“created”和“ifsp”列是正确的 Pandas Timestamp 或 datetime 列。

【讨论】:

  • 我更新了源数据。希望这会有所帮助。
  • @WriteJP 假设您的日期列是正确的日期时间(不是str)并且假设您的示例数据中的 2041 只是一个错字,此解决方案有效。
  • 成功了!我使用 io["Days"] = (io["Created_Date"] - io["IFSP_Date"]).dt.days 得到“Days to be an integer”的结果,我使用 io["Timeliness"] = np.where(io['Days']
  • 当然可以,很高兴为您提供帮助!虽然听起来您给Timelines 列字符串值1 和0,而不是整数。这是故意的吗?
  • 不幸的是,我不知道。我来自 excel 试图清理和修改 csv 文件,因为 excel 使我的机器陷入困境。结果,我没有学习基础知识,当我看到这里和 YouTube 时,我正在拼凑以完成特定任务。
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 2022-06-30
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2011-02-14
  • 2017-02-16
相关资源
最近更新 更多