计算pandas数据帧中日期时间间隔之间的实例数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算pandas数据帧中日期时间间隔之间的实例数相关的知识,希望对你有一定的参考价值。

我有一个表格的熊猫数据框

print(ts.head())

id    start_datetime            end_datetime
0   2018-09-19 00:00:00   2018-09-19 03:00:00
1   2018-09-19 01:00:00   2018-09-19 03:00:00
2   2018-09-19 01:30:00   2018-09-19 03:00:00
3   2018-09-19 02:14:00   2018-09-19 03:00:00
4   2018-09-19 02:23:00   2018-09-19 03:00:00

我想用一个列创建一个带有日期时间索引(每小时频率)的数据帧。列计算每个索引的原始数据帧的行数在其start_datetime和end_datetime值之间包含此索引。

我开始制作每小时频率的df,在适当的时间开始和结束:

ts = df.select('start_datetime','end_datetime').toPandas()
idx = pd.DatetimeIndex(freq="h", start="2018-09-19", end = '2018-11-18 
18:00:00')
df_hourly = pd.DataFrame(index=idx)
df_hourly.head()

        id
2018-09-19 00:00:00
2018-09-19 01:00:00
2018-09-19 02:00:00
2018-09-19 03:00:00
2018-09-19 04:00:00

现在我需要为每一行计算它之间的原始数据帧的行数。我试图在列的值上玩numpy,但我很确定这是一个非常好的熊猫方法。

答案

我正在使用numpy广播

s1 = df.start_datetime.values
s2 = df.end_datetime.values
s = df_hourly.index.values[:, None]
df_hourly['Value'] = np.sum((s1 <= s) & (s2 >= s), 1)
df['Value'] = np.sum((s1 <= s) & (s2 >= s), 0)

以上是关于计算pandas数据帧中日期时间间隔之间的实例数的主要内容,如果未能解决你的问题,请参考以下文章

如何删除数据帧中的间隔之间的值

使用数据帧中的某些参数计算日期之间的差异

Pandas:将日期分成 30 分钟间隔并计算平均值

使用pyspark计算每行数据帧中的总值

(运行的干净代码)根据来自另一个数据帧的日期间隔和字符串条件获取一个数据帧中的值的平均值

pandas 求两个时间差, 转化秒,判断时间差是否大于阈值