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

如何用Python处理银行数据 排除节假日与周末实现金额结转

银行交易数据节假日金额迁移实现方案

以下是基于Python Pandas的可落地实现逻辑:

前置准备

  • 提前安装依赖库:执行pip install pandas完成安装
  • 确保输入的两个文件格式符合要求:
    • 银行数据表至少包含date(日期)、amount(金额)两个字段
    • 节假日csv文件仅需包含holiday_date字段,存储所有法定节假日日期

实现步骤

1. 数据加载与基础格式转换

import pandas as pd

# 读取数据
bank_df = pd.read_csv("你的银行数据文件路径.csv")
holiday_df = pd.read_csv("你的节假日文件路径.csv")

# 日期格式统一转换为datetime类型
bank_df['date'] = pd.to_datetime(bank_df['date'])
holiday_df['holiday_date'] = pd.to_datetime(holiday_df['holiday_date'])

# 按日期升序排序,确保后续计算顺序正确
bank_df = bank_df.sort_values('date').reset_index(drop=True)

2. 标记非工作日

非工作日判定规则:周六/周日,或者存在于节假日列表中的日期

# 提取所有节假日日期为集合,方便快速匹配
holiday_set = set(holiday_df['holiday_date'].dt.date)

# 新增is_workday字段标记是否为工作日
bank_df['is_workday'] = bank_df['date'].apply(
    lambda x: x.weekday() < 5 and x.date() not in holiday_set
)

3. 金额迁移计算

# 初始化临时变量存储待累加的非工作日金额
temp_amount = 0

# 遍历每一行数据处理
for idx, row in bank_df.iterrows():
    if not row['is_workday']:
        # 非工作日:金额累加至临时变量,当前行金额设为0
        temp_amount += row['amount']
        bank_df.at[idx, 'amount'] = 0
    else:
        # 工作日:将临时存储的累计金额加到当前金额,清空临时变量
        if temp_amount > 0:
            bank_df.at[idx, 'amount'] += temp_amount
            temp_amount = 0

# 可选:如果不需要is_workday字段可以删除
# bank_df = bank_df.drop(columns=['is_workday'])

# 输出处理后的结果
bank_df.to_csv("处理后的银行数据.csv", index=False)

注意事项

  • 如果你的日期字段、金额字段命名和示例不一致,需要替换代码中对应的字段名
  • 若银行数据存在缺失的日期(比如无交易的工作日没有数据行),建议先补全所有日期序列,再执行上述计算,避免金额迁移错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:45:04