【发布时间】:2020-06-24 20:58:24
【问题描述】:
我有 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']})
我正在尝试检查 df2 中的给定 'time' 是否包含在具有相同名称的任何时间跨度内(即我只是想检查 Bob 在 df2 中的条目与 Bob 的 @987654325 @s 和 'end_time's 在 df1) 并在 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 same-labeled Series objects。有什么建议吗?
【问题讨论】:
标签: python pandas dataframe date