You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何筛选DataFrame中10:00-16:59的记录并计算客户占比

原代码存在的问题

  • 直接对字符串s1、s2做减法是非法操作,无法构造datetime对象用于筛选
  • 缺少Time列的类型转换步骤,字符串无法直接和时间阈值做大小比较
  • 额外加入了Gender == 'Female'的筛选条件,如果是统计全量客户占比需要删除,仅统计女性客户占比可以保留

正确实现代码

import pandas as pd
from datetime import datetime

FMT = '%H:%M'
# 转换Time列为time类型,方便后续大小比较
df['Time'] = df['Time'].apply(lambda x: datetime.strptime(x, FMT).time())
# 定义时间区间边界
start_time = datetime.strptime('10:00', FMT).time()
end_time = datetime.strptime('16:59', FMT).time()

# 筛选符合时间区间的记录,如需仅统计女性可放开注释的性别筛选条件
mask = (df['Time'] >= start_time) & (df['Time'] <= end_time)
# mask = (df['Gender'] == 'Female') & (df['Time'] >= start_time) & (df['Time'] <= end_time)
time_range_records = df[mask]

# 计算占比:时间段内去重客户数 / 总去重客户数,避免同一客户多笔订单重复计数
customer_in_range = time_range_records['CustomerID'].nunique()
# 仅统计女性时,总客户数替换为 df[df['Gender'] == 'Female']['CustomerID'].nunique()
total_customer = df['CustomerID'].nunique()

percentage = round(customer_in_range / total_customer * 100, 2)
print(f"10:00-16:59时间段内购买的客户占比为:{percentage}%")

数据样例

数据样例

内容的提问来源于stack exchange,提问作者Abhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:51:03