【发布时间】:2018-08-25 22:12:19
【问题描述】:
在这个问题中我有两个数据框我想向loan_df 添加一个列,该列在recharge_df 中聚合。因此,对于每笔贷款,我想在贷款日期之前获得借款人的平均充值(在这种情况下是 90 天前)。然后我会将这个新列添加到loan_df。我下面的代码有效,但速度很慢。关于如何使其超级高效的任何想法?
def mean_rec_func(msisdn,date,advance_id,window, name):
"""Returns mean recharges within a specified number of days prior to loan being taken
Keyword Arguments:
msisdn -- APF_MSISDN for loan (this is like customer ID)
date -- APF_DATE on which loan taken
advance_id -- APF_ADVANCE_ID for loan
window -- number of days to look back(int)
name -- name of the newly computed stat
"""
mean_rec = recharge_df.loc[(recharge_df['APF_MSISDN'] == msisdn) &
(recharge_df['APF_DATE']<date)
& (recharge_df['APF_DATE']>=date - datetime.timedelta(days = window))
]['APF_AMOUNT'].mean()
return pd.Series([advance_id,msisdn,mean_rec], index=['APF_ADVANCE_ID', 'APF_MSISDN', name])
# Mean recharge over last 90 days
mean_recharge_90 = loan_df.apply(lambda row: mean_rec_func(row['APF_MSISDN'], row['APF_DATE'],
row['APF_ADVANCE_ID'],
window = 90,
name ="MEAN_RECHARGE_90"), axis = 1)
【问题讨论】:
-
请提供 minimal reproducible example。这意味着修复您的代码缩进,提供一些输入数据,显示该输入数据的当前/所需输出。没有图片/链接,只有文字。
标签: python pandas dataframe pandas-groupby