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

时间:2016-03-11 11:35:48

标签: python date numpy pandas

我有一个pandas.DataFrame("贷款"),有大约250,000行贷款数据。对于每条记录,我有开始日期(" origination_date")和结束日期(" end_date")。我想确定,在特定的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上搜索过,但我还没有找到相关的答案。

0 个答案:

没有答案