示例数据框:
id start1 end1 start2 end2
0 Bob 2018-11-29 2018-11-30 2018-12-01 2018-12-31
1 James 2018-10-19 2018-10-31 NaT NaT
2 Jane 2018-04-05 2018-07-12 2018-11-29 2018-11-30
鉴于上述示例数据框,我想按月和年显示频率计数。让我们假设在这些时期,每个人 ( id) 都受到某种事物的“影响”。每个人最多有两个时间段(总是至少有一个时间段(即start1和end1),但可能有也可能没有第二个时间段(即,start2和end2))。我想显示在任何人受到影响的整个时间范围内,有多少人受到月和年的影响。
例如,上面的数据会产生这样的结果(不确定年-月是同一列还是多列——不管什么都行):
year-month count
0 2018-04 1
1 2018-05 1
2 2018-06 1
3 2018-07 1
4 2018-08 0
5 2018-09 0
6 2018-10 1
7 2018-11 2
8 2018-12 1
我的最终目标是跨不同时间段(例如,年(在本示例数据中均为 2018 年)、月/年、周等)查看这些数据。
我不知道如何将这些解包成一个系列,以便我可以在单列上绘制直方图。我知道一旦我将它们放在一个列中(例如,date),我可以执行以下操作:
df.groupby(df["date"].dt.month).count().plot(kind="bar")
但这只能按月计算,并且假设我已经将日期放在一列中。
datetime如果在每个时间范围之间,我可以使用并继续在循环中添加天数,直到我到达结束日期,但是每次我做类似的事情时,我都知道 pandas/numpy 有更好的方法。我正在寻找更好的方法。
相关分类