在python中有效地检查日期范围

2024-06-16 09:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个1.数据帧(“贷款”)有大约250000行贷款数据。对于每个记录,我都有开始日期(“起始日期”)和结束日期(“结束日期”)。我想确定,在特定的30天期限内,有多少贷款存在。我成功地做到了这一点,但似乎非常缓慢:

start = datetime.datetime(2005, 11, 1)
dates = [start + datetime.timedelta(days=int(30*i)) for i in np.arange(130)]
def in_date(loan_dates, date=dates[0]):
    orig = loan_dates[0]
    end = loan_dates[1]
    return(orig <= date and end > date)
def count_active(current_date):
    loan_filter = loans.ix[:, ('origination_date', 'end_date')].apply(
            in_date, date=current_date, axis=1)
    return(np.count_nonzero(loan_filter))
active_loans = [count_active(date) for date in dates]

我的问题是:有没有更快的方法?在我的iPython笔记本上,这大约需要30分钟,而且像这样的计算不应该太耗费资源。。。你知道吗

我对python还比较陌生,如果这是一个愚蠢的问题,我很抱歉。我搜索了StackOverflow和Google,但没有找到任何相关的答案。你知道吗


Tags: 数据infordatetimedatedefcountnp