gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:13:29 29 4
gpt4 key购买 nike

我在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com