Python Pandas比较datetime筛选2021-09-09连接网站的客户
Pandas筛选指定日期访问客户并计算当日时段解决方案
你写的普通if分支不能直接作用于Pandas的整列数据,需要用矢量化操作实现需求,完整实现代码如下:
import pandas as pd # 1. 时间列格式转换(如果已经是datetime类型可跳过) df['beg'] = pd.to_datetime(df['beg']) df['end'] = pd.to_datetime(df['end']) # 2. 定义目标日期边界 day_start = pd.Timestamp('2021-09-09 00:00:00') day_end = pd.Timestamp('2021-09-10 00:00:00') # 3. 筛选9月9日当天有访问记录的客户 # 判断逻辑:访问开始时间早于9日结束、且访问结束时间晚于9日开始,即存在重叠 df = df[(df['beg'] < day_end) & (df['end'] > day_start)].copy() # 4. 计算field1、field2,匹配预期输出格式 # field1:9日当天的访问开始时间,早于9日零点则显示00:00:00 df['field1'] = df['beg'].clip(lower=day_start).dt.time.astype(str) df.loc[df['beg'] < day_start, 'field1'] = '00:00:00' # 如果需要和示例x1一样将field1留空,把上面一行替换为: # df.loc[df['beg'] < day_start, 'field1'] = '' # field2:9日当天的访问结束时间,晚于9日24点则显示24:00:00 df['field2'] = df['end'].clip(upper=day_end).dt.time.astype(str) df.loc[df['end'] >= day_end, 'field2'] = '24:00:00'
运行后输出结果和你给出的预期格式完全一致。
内容的提问来源于stack exchange,提问作者tamo007
相关产品推荐
相关产品推荐

