gpt4 book ai didi

python - 计算两个日期时间之间的观察数

转载 作者:行者123 更新时间:2023-12-01 08:09:51 25 4
gpt4 key购买 nike

我有一个关于许可证的数据集,对于每个许可证,我可以看到它的颁发日期和过期日期:

数据

License ID    Issue Date      Expiration Date    
1 2008-04-02 2008-07-10
2 2008-06-03 2008-09-12
3 2008-07-14 2008-10-21
4 2008-08-15 2008-11-12

然后我想计算特定日期有多少个许可证处于事件状态。

输出

Day              Number of Active Licenses
2008-04-01 0
2008-04-02 1
2008-04-03 1
...
2008-06-03 2
...
2008-07-11 1
...
2008-07-15 2

我已经有了一个要计算许可证编号的天数列表。它的格式如下:

activeDay = [2008-04-01, 2008-04-02, ..., 2008-12-31]

我认为可能存在循环:

对于 activeDay 中的每一,为每个观察(许可证 ID)生成一列,使其等于 1,如果此 day 位于发行日期到期日期之间,如果day则等于0 code> 超出了区间 [发行日期,到期日期]。然后我们可以对该列中的数字求和并获得事件许可证的数量。

可能存在一种更简单的方法来使用函数 .count() 并将发行日期和到期日期之间的日期设置为条件...

但是,我不确定如何实现这些想法,而且我在网上找到的答案只是计算两个日期之间的天数...有人可以帮忙吗?非常感谢!!

最佳答案

您可以使用 mask查找所需记录

import datetime

df = pd.DataFrame([['1','2008-04-02','2008-07-10']],
columns=['license', 'issue', 'expire'])

parse_date = lambda x: return datetime.datetime.strptime(x, '%Y-%m-%d')

dt = parse_date('2008-06-01')

date_between = lambda x: parse_date(x['issue']) > dt and parse_date('expire') < dt

df = df[df.apply(date_between)]

所以你可以使用列表来存储结果:

s = []
for ds in active_day:
dt = parse_date(ds)
n = df[df.apply(date_between)].license.count()
s.append((dt, n))

result_df = df.DataFrame(s, columns=['active_day', 'count'])

关于python - 计算两个日期时间之间的观察数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com