首页 > 解决方案 > 熊猫索引的时间范围

问题描述

对于每个数据点(在此示例中为 a 和 b),指定其特定的发生时间范围:

pd.DataFrame([
    {'from': pd.Timestamp('2020-01-01'), 'to': pd.Timestamp('2020-01-05')}, 
    {'from': pd.Timestamp('2020-01-02'), 'to': pd.Timestamp('2020-01-03')}
], index=['a', 'b'])

例如,我想计算数据点何时处于活动状态:

2020-01-01    1
2020-01-02    2
2020-01-03    2
2020-01-04    1
2020-01-05    1

是否有任何方便的方法可以将 period(时间范围)合并到 a DateTimeIndex,以便于绘图或计数?

标签: pandasdatetimeindex

解决方案


这里有一个方法:

from itertools import chain
pd.Series(chain(*[pd.date_range(i, j, freq='D') for i,j in zip(df['from'], df['to'])]))\
  .value_counts().sort_index().plot()

输出:

在此处输入图像描述


推荐阅读