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

如何基于指定放款规则使用Pandas填充月度资金付款计划表

实现方案

核心思路

将放款规则与业务处理逻辑分离,通过可配置的字典存储不同用户的放款规则,后续规则调整、新增用户仅需修改配置字典即可,无需改动核心处理代码。

完整实现代码

import pandas as pd
import numpy as np

# 1. 基础数据构造(对应读取CSV后的初始结构)
names = ['john', 'pete', 'jack']
funds = [1000, 3600, 2390]
df = pd.DataFrame({'Name': names, 'Fund': funds})
# 批量生成m1-m12列,避免逐行硬编码赋值
for i in range(1, 13):
    df[f'm{i}'] = np.nan

# 2. 放款规则配置(仅需修改此处即可适配规则变更)
# 规则格式:用户名: (起始发放月份序号, 连续发放月数, 每月发放占总资金比例)
# 注:m1对应月份序号1,比如从m2开始发放则起始序号填2
rule_config = {
    "john": (2, 10, 0.1),
    "pete": (3, 8, 0.125),
    "jack": (5, 5, 0.2)
}

# 3. 核心处理逻辑
month_cols = [f'm{i}' for i in range(1, 13)]  # 统一管理月度列名
for idx, row in df.iterrows():
    user = row['Name']
    if user not in rule_config:
        continue  # 无匹配规则的用户跳过,保持NaN
    start_month_idx, months, rate = rule_config[user]
    # 计算单月发放金额
    monthly_pay = row['Fund'] * rate
    # 匹配要赋值的列范围:起始索引为start_month_idx-1(列表从0开始计数)
    target_cols = month_cols[start_month_idx-1 : start_month_idx-1 + months]
    df.loc[idx, target_cols] = monthly_pay

# 输出结果验证
print(df)

输出结果

运行上述代码后输出的df完全符合预期:

Name  Fund  m1     m2     m3     m4     m5     m6     m7     m8     m9    m10    m11  m12
0  john  1000 NaN  100.0  100.0  100.0  100.0  100.0  100.0  100.0  100.0  100.0  100.0  NaN
1  pete  3600 NaN    NaN  450.0  450.0  450.0  450.0  450.0  450.0  450.0  450.0    NaN  NaN
2  jack  2390 NaN    NaN    NaN    NaN  478.0  478.0  478.0  478.0  478.0    NaN    NaN  NaN

灵活适配说明

  • 新增用户仅需在rule_config中新增对应键值对即可
  • 调整用户放款规则直接修改对应用户的元组参数即可,无需修改处理逻辑
  • 若后续月度列数调整(比如扩展到m24),仅需修改生成月度列、定义month_cols的范围参数即可

内容的提问来源于stack exchange,提问作者Diop Chopra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:00