python - 计算 pandas 数据框中的日期时间间隔之间有多少个实例

标签 python pandas datetime

我有一个以下形式的 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 来处理列的值,但我很确定有一种漂亮的 pandas 方法可以做到这一点。

最佳答案

我正在使用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)

关于python - 计算 pandas 数据框中的日期时间间隔之间有多少个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55660931/

相关文章:

python - 基于类别列表虚拟化变量

datetime - 如何在 Kotlin 标准库(多平台)上获取当前的 unix 时间

python - 修复某些行中日期和月份互换的日期字符串

c# - 如何创建 DateTime 对象?

python - 如何在 python 中应用梯度函数?

python - Pandas DataFrame 无法读取数据

python - 如何计算变量值在几天内随时间的共现情况以生成邻接列表?

python - 如何使用任何 xml 库替换节点的全部内容?

python - 是否可以在 Python 单元测试中进行子测试 "expected failure"?

python - 如何防止BeautifulSoup网页崩溃?