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

如何合并Dataframe中同T_ID与卡号的交易,生成有效成功支付记录

处理理赔交易数据:合并支付与撤销记录并筛选有效支付记录

核心实现步骤

  • 过滤所有拒付状态的交易记录(需根据业务定义拒付状态,如REFUSED、DECLINED等)
  • 按T_ID和Card Number分组,合并同一组内的PAID(正向金额)与REVERSAL(负向金额)交易,计算净额
  • 合并后统一标记为PAID状态,最终输出金额为正的有效支付记录

代码实现(Pandas)

import pandas as pd

# 构造示例原始数据
data = {
    'T_ID': [1, 1, 2, 3, 3],
    'Card Number': [1234, 1234, 5678, 9012, 9012],
    'Status': ['PAID', 'REVERSAL', 'PAID', 'REFUSED', 'PAID'],
    'Amount': [100, -30, 200, -50, 150]
}
df = pd.DataFrame(data)

# 1. 过滤拒付状态的记录(可根据实际业务调整拒付状态列表)
rejected_statuses = ['REFUSED', 'DECLINED']
filtered_df = df[~df['Status'].isin(rejected_statuses)]

# 2. 分组合并交易:按T_ID+卡号聚合金额,统一状态为PAID
merged_df = filtered_df.groupby(['T_ID', 'Card Number'], as_index=False).agg(
    Amount=('Amount', 'sum'),
    Status=('Status', lambda _: 'PAID')
)

# 3. 可选:过滤掉金额≤0的无效支付记录(根据业务需求决定是否保留)
final_valid_payments = merged_df[merged_df['Amount'] > 0]

# 输出结果
print(final_valid_payments)

输出结果

T_ID  Card Number  Amount Status
0     1         1234      70    PAID
1     2         5678     200    PAID
2     3         9012     150    PAID

关键说明

  • 拒付状态列表需根据实际业务场景调整,确保所有无效拒付记录被排除
  • 分组聚合时使用sum计算净额,自动抵消PAID与REVERSAL的金额
  • 可选的金额过滤步骤可剔除撤销后无实际支付的记录,进一步保证数据集有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:54:05