You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python/Pandas生成贷款从起息到到期的风险敞口演变DataFrame

生成贷款风险敞口演变DataFrame

实现步骤及代码

  1. 导入依赖并初始化输入数据
import pandas as pd

# 输入的贷款数据
data = {
    'contract': [1, 2, 3],
    'amount': [100, 90, 50],
    'inception': ['31/12/2022', '31/12/2023', '31/12/2024'],
    'maturity': ['31/12/2042', '31/12/2052', '31/12/2035']
}
df = pd.DataFrame(data)
  1. 转换日期格式为datetime类型
    字符串日期无法直接比较,先统一转为datetime格式:
df['inception'] = pd.to_datetime(df['inception'], format='%d/%m/%Y')
df['maturity'] = pd.to_datetime(df['maturity'], format='%d/%m/%Y')
  1. 生成观测日期序列
    提取最早起息日到最晚到期日之间的每年12月31日(和示例日期格式一致):
start_date = df['inception'].min()
end_date = df['maturity'].max()

# 生成每年年末的日期序列,转为示例的字符串格式
date_range = pd.date_range(start=start_date, end=end_date, freq='Y').strftime('%d/%m/%Y').tolist()
result_df = pd.DataFrame({'date': date_range})
  1. 计算每个合同的风险敞口
    遍历每个合同,判断日期是否处于敞口期(起息日及之后、到期日之前),符合则赋值贷款金额,否则为0:
for _, loan in df.iterrows():
    contract_id = str(loan['contract'])
    amount = loan['amount']
    inception = loan['inception']
    maturity = loan['maturity']
    
    result_df[contract_id] = result_df['date'].apply(
        lambda dt_str: amount if (pd.to_datetime(dt_str, format='%d/%m/%Y') >= inception) and (pd.to_datetime(dt_str, format='%d/%m/%Y') < maturity) else 0
    )
  1. 查看最终结果
print(result_df)

运行后输出的DataFrame将与示例一致,包含从最早起息日到最晚到期日的每年年末日期,以及对应每个合同的风险敞口金额。

内容的提问来源于stack exchange,提问作者Nassir Bin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:10:37