【发布时间】:2021-12-26 17:50:39
【问题描述】:
我有一个数据框,我想查找相同 ID 的定期付款(仅当金额相同且月份中的某天相同且存在误差(+-5 天)时。 我做了以下事情:
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)
print(dd)
id day_of_month amount
0 1 2 1000
1 1 2 1000
2 1 5 50
3 3 4 1500
4 3 6 3000
5 3 8 1500
6 5 10 4000
7 5 15 2000
8 5 25 2000
然后我这样做:
dd[dd.duplicated(subset = ['id','amount'], keep = False)]
id day_of_month amount
0 1 2 1000
1 1 2 1000
3 3 4 1500
5 3 8 1500
7 5 15 2000
8 5 25 2000
如您所见,输出的最后一行是误报,因为我没有设法实现当月的 +-5 天窗口。 我想要的输出应该是这个
id day_of_month amount
0 1 2 1000
1 1 2 1000
3 3 4 1500
5 3 8 1500
关于如何实现我需要的任何想法?谢谢!
【问题讨论】:
标签: python python-3.x pandas dataframe duplicates