Python 计算两个日期时间之间的观察次数

Python 计算两个日期时间之间的观察次数,python,Python,我有一个关于许可证的数据集,对于每个许可证,我可以看到它的发布日期和到期日期: 数据 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

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

数据

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
,如果
在间隔之外,则该列等于
0
[发布日期,过期日期]。然后我们可以将此列中的数字相加,并获得活动许可证的计数

可能存在一种更简单的方法来使用函数
.count()

但是,我不知道如何实现这两个想法,我在网上找到的答案只是计算两次约会之间的天数……有人能帮我吗?非常感谢!!

你可以使用

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)]

非常感谢您的快速回复!!这真的救了我一命。但是,我在运行code
df=df[df.apply(date_-between)]
时遇到了一个错误。它说
KeyError:('issue','occurrented at index license')
你知道可能出了什么问题吗?我修改了date_-between函数来指定'expire'的数据帧:
parse_-date(x['expire']
但这并不能修复错误…@Tian我在使用我精心编制的数据集,请注意,我的案例中的列名是
issue
expire
。您的数据框使用的列名不同。有关更多信息,请阅读:@Tian在创建数据框
df=pd.dataframe(lst,columns)时修复列名=['col1','col2'])
等。非常感谢您提供的详细信息和参考资料!它工作得非常完美!
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'])