我有一个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上搜索过,但我还没有找到相关的答案。