【发布时间】:2021-05-15 00:38:59
【问题描述】:
我希望做与here 提出的问题类似的事情,但我的时间增量是 2 年,即数据报告于 2008 年、2010 年、2012 年等,我只想知道开始时间戳和每个站点的结束时间戳,并计算其间的条目数。
输入数据:
| Report_Year | PWSID |
|---|---|
| 2008-01-01 | A |
| 2008-01-01 | B |
| 2008-01-01 | C |
| 2008-01-01 | D |
| 2010-01-01 | A |
| 2010-01-01 | B |
| 2010-01-01 | C |
| 2012-01-01 | A |
| 2012-01-01 | B |
| 2016-01-01 | A |
这将产生一个像这样的表格:
| Report_Year | PWSID | Count | Start date | End Date |
|---|---|---|---|---|
| 2008-01-01 | A | 4 | 2008 | 2016 |
| 2008-01-01 | B | 3 | 2008 | 2012 |
| 2008-01-01 | C | 2 | 2008 | 2010 |
| 2008-01-01 | D | 1 | 2008 | 2008 |
我想我需要使用如下函数:
from dateutil.relativedelta import relativedelta
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
return from_date - relativedelta(years=years)
但无法解决如何将其嵌入到 groupby 函数中,就像在这样的时间工作时可能会做的那样:
g=df.groupby('PWSID')['Report_Year'].diff().ne(pd.Timedelta(hours=1)).groupby(df['PWSID']).cumsum()
提前非常感谢!
【问题讨论】: