You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中pandas Timedelta的ceil("1d")用法疑问与报错解析

关于Pandas Timedelta的ceil("1d")方法疑问

我遇到了如下函数:

def sub_kpi1_rule(sub_comp_appr_date, date_report_run, greater_of_date_sub_sub_ll):
        if pd.isnull(sub_comp_appr_date) and not alive_for_six_days(date_report_run, greater_of_date_sub_sub_ll):
            return "NA"
        elif (sub_comp_appr_date - greater_of_date_sub_sub_ll).ceil("1d").days <= 6:
            return "PASS"
        else:
            return "FAIL"

所有参数均为日期类型,我知道(sub_comp_appr_date - greater_of_date_sub_sub_ll)会返回一个时间差实例,但对其中的ceil("1d")语法感到困惑。

我尝试用标准库的datetime.date相减后调用该方法时出现报错:

from datetime import date
a = date(2022, 10,1)
b = date(2022, 10,15)
(b-a).ceil("1d")


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In [36], line 4
      2 a = date(2022, 10,1)
      3 b = date(2022, 10,15)
----> 4 (b-a).ceil("1d")

AttributeError: 'datetime.timedelta' object has no attribute 'ceil'

该函数是在DataFrame上通过apply调用的:

df["Sub KPI1"] = df.apply(lambda x: sub_kpi1_rule(x["SUBM_LATE_DESTINATION_COMPLIANCE_APPROVAL_DATE"], date_report_run, x["Greater of Date Submitted and Submission LL Created"]), axis=1)

我确认参数类型为pd.Timestamp,因为date_report_run被显式转换为该类型:

date_report_run = date(year_report_run, month_report_run, day_report_run)
date_report_run = pd.Timestamp(date_report_run)

所以我猜测这里相减得到的是pandas._libs.tslibs.timedeltas.Timedelta而非标准库的datetime.timedelta,想了解此处ceil("1d")的具体作用。

内容的提问来源于stack exchange,提问作者smackenzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:15:07