python - 如何确定日期时间列中的值是否在来自另一个数据帧的任何一对日期时间之间

标签 python pandas numpy

我在 google 上搜索了几个小时来解决这个问题,但我一直无法找到有关这些参数的任何信息。我想查找与特定日期时间关联的值是否出现在另一个不同大小的数据框中的至少一个日期时间范围之间。以下是示例数据框:

import pandas as pd

df1 = pd.DataFrame({'Datetime': ['2020-01-01 01:01:01', '2020-01-01 10:10:10', '2020-01-01 12:10:01', '2020-01-02 03:16:24', '2020-12-01 04:34:21'], 'Value': [0.006, 0.002, 0.005, 0.034, 0.001]})
df2 = pd.DataFrame({'Start': ['2020-01-01 01:01:00', '2020-01-01 07:10:10', '2020-01-01 21:10:01', '2020-01-03 06:16:24', '2020-12-25 14:12:34'], 'End': ['2020-01-01 02:00:00', '2020-01-01 08:01:01', '2020-01-01 21:34:09', '2020-01-01 09:23:42', '2020-12-25 15:13:21']})

# convert columns to datetime format
df1.Datetime = pd.to_datetime(df1.Datetime)
df2[['Start', 'End']] = df2[['Start', 'End']].apply(pd.to_datetime)

df1

Datetime                Value     Check
2020-01-01 01:01:01     0.006     
2020-01-01 10:10:10     0.002
2020-01-01 12:10:01     0.005
2020-01-02 03:16:24     0.034
2020-12-01 04:34:21     0.001

df2

Start                   End    
2020-01-01 01:01:00     2020-01-01 02:00:00     
2020-01-01 07:10:10     2020-01-01 08:01:01
2020-01-01 21:10:01     2020-01-01 21:34:09
2020-01-03 06:16:24     2020-01-01 09:23:42
2020-12-25 14:12:34     2020-12-25 15:13:21

如果与索引 1 处的 df1['Datetime'] 关联的 df1['Value'] 位于 df2 中的任何范围之间,如果关联的日期时间不在任何范围之间,该函数应在 df1['Check']False 中返回 True。这应该继续检查 df1 中的每个索引与 df2 中的所有范围。

我试过使用 pd.DataFrame.any,但这会抛出 “ValueError: Can only compare same-labeled Series objects”。我在想一个嵌套的 for 循环 将是要走的路,但我不知道如何为这样的事情设置一个。

最佳答案

使用numpy的数组广播:

dt = df1['Datetime'].to_numpy()
start = df2['Start'].to_numpy()[:, None]
end = df2['End'].to_numpy()[:, None]

mask = (start <= dt) & (dt <= end)
df1['Check'] = mask.any(axis=0)

关于python - 如何确定日期时间列中的值是否在来自另一个数据帧的任何一对日期时间之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66191317/

相关文章:

python - matplotlib 将数组转换为参数图

python - 运行 python 包

python - 在 Python/Pandas 中什么时候调用 object.method 和 module.function?

python - njit numba 函数的高级索引替代方案

Python - 在 Pandas DataFrame 中取消嵌套单元格

python - Pandas 是将一系列值分配给特定位置的最有效方法

python - 如何对分配给一个变量的多个数组进行平均?

python - 计算卷积神经网络中特征图的维度

python - Python 中 FFT 峰值下的面积

python - 使用字符串替换时如何在Python中屏蔽双引号?