首页 > 解决方案 > 如果值不相等,则计算时间差

问题描述

我可以使用以下方法计算差异(以小时为单位):

pdf["hours_used"] = (
    pdf["_source_eventTime_right"] - pdf["_source_eventTime_left"]
).astype("timedelta64[h]")

这按预期工作。但我想为左右时间完全相同的行返回 NULL。如何在工时计算中添加“if”子句?

标签: pandas

解决方案


正如评论中所建议的那样,np.where按预期工作......

pdf["hours_used"] = np.where(
    (pdf["_source_eventTime_right"] - pdf["_source_eventTime_left"])
    .astype("int")
    .gt(0),
    (pdf["_source_eventTime_right"] - pdf["_source_eventTime_left"]).astype(
        "timedelta64[h]"
    ),
    np.nan,
)

推荐阅读