Python处理DataFrame时间数据:筛选2021-09-09连接网站的客户记录
实现代码及逻辑说明
首先先完成数据预处理,将时间列转为pandas可识别的datetime格式,再根据你字段的实际含义选择对应筛选逻辑:
import pandas as pd # 构造示例DataFrame,你可以替换为自己读入的数据 data = { 'id': ['x1', 'x2', 'x3', 'x4'], 'beg': ['2021-09-08 10:00:00', '2021-09-09 22:00:00', '2021-09-08 10:00:00', '2021-09-09 10:00:00'], 'end': ['2021-09-10 10:00:00', '2021-09-10 00:00:00', '2021-09-09 10:00:00', '2021-09-09 14:00:00'] } df = pd.DataFrame(data) # 转时间格式 df['beg'] = pd.to_datetime(df['beg']) df['end'] = pd.to_datetime(df['end']) # 定义目标日期的时间范围 target_start = pd.to_datetime('2021-09-09 00:00:00') target_end = pd.to_datetime('2021-09-10 00:00:00')
情况1:beg~end为断连时段(字段含义和你描述一致)
筛选逻辑:排除断连时段完全覆盖9月9日全天的客户,剩下的都是当天有过连接的客户
filtered_df = df[~((df['beg'] <= target_start) & (df['end'] >= target_end))]
示例数据筛选结果:x2、x3、x4
情况2:beg~end为连接时段(常见描述笔误场景)
筛选逻辑:只要连接时段和9月9日有交集就算符合要求,通用时间区间交集判断公式:A开始 < B结束 且 A结束 > B开始
filtered_df = df[(df['beg'] < target_end) & (df['end'] > target_start)]
示例数据筛选结果:x1、x2、x3、x4
内容的提问来源于stack exchange,提问作者dsp
相关产品推荐
相关产品推荐

