【发布时间】:2021-10-16 21:08:14
【问题描述】:
我正在寻找有关如何解决此问题的一些方法。
我有一张表“AnnualContracts”
其中,有以下几种数据:
| Year1Amount | Year1Payday | Year2Amount | Year2Payday | Year3Amount | Year3Payday |
|---|---|---|---|---|---|
| 1000.0 | 2020-08-01 | 1000.0 | 2021-08-01 | 1000.0 | 2022-08-01 |
| 2400.0 | 2021-06-01 | 3400.0 | 2022-06-01 | 4400.0 | 2023-06-01 |
| 1259.0 | 2019-05-01 | 1259.0 | 2020-05-01 | 1259.0 | 2021-05-01 |
| 2150.0 | 2021-08-01 | 2150.0 | 2022-08-01 | 2150.0 | 2023-08-01 |
等等,这个范围长达 5 年,超过 380 行,有四种类型的客户(他们自己的表设置与上面类似):年付、半年付、季度付和月付。
我还有一个空数据框 (SumsOfPayments),其索引基于每月更新的变量和基于上述客户类型的列。
看起来像这样:
| Annual | Bi-Annual | Quarterly | Monthly | |
|---|---|---|---|---|
| 12monthsago | ||||
| 11monthsago | ||||
| 10monthsago |
等到未来 60 个月。
SumOfPayments 和 YearXPaydays 上的索引都设置为各自月份的第一天,因此它们可以 == 匹配。
(作为如何在 SumOfPayments 表上设置索引变量的示例):
12monthsago = datetime.today().replace(day=1,hour=0,minute=0).replace(second=0,microsecond=0)+relativedelta(months=-12)
因此,如果今天的日期是 2021 年 8 月 13 日,则上述将产生 2020-08-01 00:00:00。
这背后的意图是:
-
按日期排序年X发薪日,得到按该分组日期的年总和X金额
-
从这些分组的总和中,检查 SumOfPayments 数据框上的索引,然后在日期匹配的地方输入总和
示例(基于上表)
年度合同:
| Year1Amount | Year1Payday | Year2Amount | Year2Payday | Year3Amount | Year3Payday |
|---|---|---|---|---|---|
| 1000.0 | 2020-08-01 | 1000.0 | 2021-08-01 | 1000.0 | 2022-08-01 |
| 2400.0 | 2021-06-01 | 3400.0 | 2022-06-01 | 4400.0 | 2023-06-01 |
| 1259.0 | 2019-05-01 | 1259.0 | 2020-05-01 | 1259.0 | 2021-05-01 |
| 2150.0 | 2021-08-01 | 2150.0 | 2022-08-01 | 2150.0 | 2023-08-01 |
支付总额:
| Annual | Bi-Annual | Quarterly | Monthly | |
|---|---|---|---|---|
| 12monthsago | 1000.0 | |||
| 11monthsago | ||||
| 10monthsago | ||||
| 9monthsago | ||||
| 8monthsago | ||||
| 7monthsago | ||||
| 6monthsago | ||||
| 5monthsago | ||||
| 4monthsago | ||||
| 3monthsago | 1259.0 | |||
| 2monthsago | 2400.0 | |||
| 1monthsago | ||||
| currentmont | 3150.0 |
非常感谢您对此的任何帮助,在此先感谢您的帮助。
【问题讨论】:
标签: python pandas datetime pandas-groupby sumifs