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

Pandas如何筛选同id同金额且月日误差±5天内的周期性付款记录

实现方案

你可以在原有筛选逻辑的基础上,增加分组校验付款日极差的步骤,具体代码如下:

import pandas as pd

# 示例数据
d = {'id':[1,1,1,3,3,3,5,5,5],
    'day_of_month':[2,2,5,4,6,8,10,15,25],
    'amount':[1000,1000,50,1500,3000,1500,4000,2000,2000]}
dd = pd.DataFrame(d)

# 1、筛选同id、同金额至少出现2次的记录
dup_df = dd[dd.duplicated(subset = ['id','amount'], keep = False)]

# 2、按id、amount分组,过滤付款日差超出±5天范围的分组
# 阈值可根据业务调整:允许刚好±5则设为10,严格小于±5可设为9
threshold = 9
res = dup_df[dup_df.groupby(['id','amount'])['day_of_month'].transform(lambda x: x.max() - x.min()) <= threshold]

print(res)

输出结果

id  day_of_month  amount
0   1             2    1000
1   1             2    1000
3   3             4    1500
5   3             8    1500

逻辑说明

  • 第一步先过滤掉同id同金额仅出现一次的非重复记录,和你原有逻辑一致
  • 第二步对每个(id,金额)分组计算所有付款日的极差(最大值减最小值),仅保留极差在阈值范围内的分组,就能过滤掉付款日差超出±5天的假阳性结果
  • 阈值可灵活调整:如果允许付款日刚好落在±5的边界(比如基准日20号,付款日15号和25号,极差为10),把threshold改为10即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:04