gpt4 book ai didi

python - 检查日期是否在多个日期范围之间

转载 作者:行者123 更新时间:2023-12-04 09:36:24 24 4
gpt4 key购买 nike

我有 2 个数据框:

df1 = pd.DataFrame({'name': ['Bob', 'Jenny', 'Larry', 'Sam', 'Ashley', 'John', 'Bob', 'Jenny', 'Larry', 'Sam', 'Ashley', 'John'], 'start_time': ['2020-06-01 08:01:45', '2020-06-01 08:55:47', '2020-06-01 09:07:00', '2020-06-01 09:12:00', '2020-06-01 09:12:40', '2020-06-01 09:22:05', '2020-06-02 08:01:45', '2020-06-02 08:55:47', '2020-06-02 09:07:00', '2020-06-02 09:12:00', '2020-06-02 09:12:40', '2020-06-02 09:22:05'], 'end_time':['2020-06-01 16:15:00', '2020-06-01 17:00:00', '2020-06-01 17:05:04', '2020-06-01 17:12:12', '2020-06-01 17:45:00', '2020-06-01 19:05:00', '2020-06-02 16:15:00', '2020-06-02 17:00:00', '2020-06-02 17:05:04', '2020-06-02 17:12:12', '2020-06-02 17:45:00', '2020-06-02 19:05:00']})
df2 = pd.DataFrame({'name': ['Bob', 'Bob', 'Jenny', 'Ashley', 'Bob', 'John', 'John', 'Jenny', 'Sam'], 'time': ['2020-06-01 08:07:00', '2020-06-01 08:40:47', '2020-06-01 8:50:00', '2020-06-01 10:10:30', '2020-06-01 14:12:33', '2020-06-01 14:41:33', '2020-06-01 15:12:33', '2020-06-01 18:44:33', '2020-06-01 22:12:07']})
我正在尝试检查是否给定 'time'df2包含在具有相同名称的任何时间跨度内(即,我只是尝试检查 Bob 在 df2 中的条目与 Bob 的 'start_time' s 和 'end_time' s in df1 )并在新列中返回一个 bool 值在 df2 .这是我期望的输出:
df2 = pd.DataFrame({'name': ['Bob', 'Bob', 'Jenny', 'Ashley', 'Bob', 'John', 'John', 'Jenny', 'Sam'], 'time': ['2020-06-01 08:07:00', '2020-06-01 08:40:47', '2020-06-01 8:50:00', '2020-06-01 10:10:30', '2020-06-01 14:12:33', '2020-06-01 14:41:33', '2020-06-01 15:12:33', '2020-06-01 18:44:33', '2020-06-01 22:12:07'], 'legal': [True, True, False, True, True, True, True, False, False]})
我试过使用 if 函数,但我不断收到 ValueError: Can only compare相同标签的 Series 对象。有什么建议?

最佳答案

您可以通过进行左连接、比较然后汇总“合法”的最大值来实现:

df3 = df2.merge(df1, on='name', how='left')

df3['legal'] = (df3['time'] >= df3['start_time']) & (df3['time'] <= df3['end_time'])

print(df3[['name', 'time', 'legal']].groupby(['name', 'time']).max().reset_index())
打印
     name                 time  legal
0 Ashley 2020-06-01 10:10:30 True
1 Bob 2020-06-01 08:07:00 True
2 Bob 2020-06-01 08:40:47 True
3 Bob 2020-06-01 14:12:33 True
4 Jenny 2020-06-01 18:44:33 False
5 Jenny 2020-06-01 8:50:00 False
6 John 2020-06-01 14:41:33 True
7 John 2020-06-01 15:12:33 True
8 Sam 2020-06-01 22:12:07 False
注意:在比较字符串时,日期时间的格式一致很重要。

关于python - 检查日期是否在多个日期范围之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62563990/

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