【发布时间】:2018-11-25 23:22:39
【问题描述】:
我遇到了一个在 Python 中无法解决的问题(我以前在 SQL 中做过,但我在 Python 方面不如在 SQL 方面那么好)
这是我的数据示例:
desc date_1 date_2 date_3 values
54287171 cc-cc 2018-03-14 2017-07-03 2018-05-21 55
49410141 other-dd 2012-01-18 2017-01-26 2011-12-30 17
37694577 other-dd 2018-07-05 2017-07-25 2018-06-19 9
54051782 other-cc 2014-10-23 2017-11-24 2014-10-31 37
7378464 dd-cc 2016-08-05 2018-05-15 2016-07-22 92
29665541 dd-cc 2011-12-14 2017-08-01 2012-05-01 40
2999878 dd-cc 2018-10-03 2018-04-13 2018-09-17 37
39453869 cc-cc 2015-11-24 2017-09-09 2015-11-21 81
7181109 dd-dd 2018-01-18 2017-11-24 2018-01-15 27
29580865 dd-cc 2017-04-24 2017-09-07 2017-05-04 38
14778957 other-cc 2017-11-02 2017-06-20 2018-06-26 49
32500886 cc-dd 2017-01-12 2017-05-26 2017-01-12 50
52146154 other-cc 2018-08-01 2017-03-27 2018-07-16 5
7208584 cc-dd 2018-03-13 2018-07-04 2018-04-26 8
35894666 cc-cc 2017-12-04 2018-06-13 2018-08-14 88
27565108 other-other 2015-10-19 2017-03-14 2016-01-22 88
50705834 other-cc 2018-01-08 2017-12-09 2018-01-11 62
45420360 dd-cc 2017-10-23 2017-09-02 2018-01-29 52
55933497 dd-cc 2017-04-14 2018-06-07 2017-09-27 36
46160680 dd-cc 2014-06-05 2018-01-16 2016-01-27 87
简而言之,我正在尝试重新创建此功能:
SUM(CASE
WHEN date_1 <= date_2 - interval '11' month
AND date_3 > date_2 - interval '11' month
THEN values
end)
但也可以按 desc 列分组。
所以我正在尝试开发一种逻辑,该逻辑将在日期之间创建一个间隔并将该间隔内的所有值相加。为了提供更多背景信息,我试图实现两件事:
- "date_2" 是事件发生的日期,我正在尝试总结该时间点的值。这只是通过 groupby 实现的吗?
- 然后我尝试以每月增量添加间隔,即相同的函数,将值相加,但在 date_2 之前 12 个月,然后在 date_2 之前 11 个月,然后在 date_2 之前 10 个月。
示例输出应大致如下所示:
desc interval values_sum
cc-cc at_date 55
cc-dd at_date 17
other-dd at_date 9
cc-cc date_minus_1 37
cc-dd date_minus_1 92
other-dd date_minus_1 40
cc-cc date_minus_2 37
【问题讨论】:
标签: python pandas datetime intervals