我有借款人身份证,银行身份证,到期日和贷款发放日期的贷款数据。我想知道,对于任何借款人来说,她以前的贷款是否在当前贷款发放之前尚未到期(多次借款)。如果是这样,我想生成一个列,其中包含从中取出上一笔尚未到期贷款的银行id。你知道吗
我的数据看起来像
df = pd.DataFrame({'month':[3,6,7,12,2,5,8,1],
'borrower':[1,1,1,1,2,2,3,4],
'bank':[1,1,2,3,3,3,4,5],
'maturity':[9,18,19,24,14,17,14,13]})
我想在这一栏中补充:
df = pd.DataFrame({'month':[3,6,7,12,2,5,8,1],
'borrower':[1,1,1,1,2,2,3,4],
'bank':[1,1,2,3,3,3,4,5],
'maturity':[9,18,19,24,14,17,14,13],
'currently_borrowing':[np.nan,1,1,2,np.nan,3,np.nan,np.nan]})
我尝试了以下代码:
df = df.sort_values(['borrower','month'])
if ((df['bank'] == df['bank'].shift()) & (df['maturity'] >= df['maturity'].shift()) &(df['maturity'].shift() > df['month'])) :
df['currently_borrowing'] = df['bank'].shift()
else :
df['currently_borrowing'] = np.nan
但我收到以下错误消息:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我尝试添加.any()
和.all()
,但是新列只包含nan。你知道吗
非常感谢您的帮助!你知道吗
IIUC,您可以创建一个掩码并使用
np.where
:你误解了
if...else
的适用性-它只适用于标量值,而不是pd.Series
。这就是np.where
更适合这里的原因。你知道吗此外,您的掩码逻辑也有问题。第一个条件应该在
borrower
上完成,而不是在bank
上完成。你知道吗相关问题 更多 >
编程相关推荐