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
相关产品推荐
相关产品推荐

