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

Pandas DataFrame中如何判断商品是否在上架后24小时内售出?

实现方案

你写的代码存在的几个问题

  • 还没创建sold_in_24列就直接遍历这列,运行时会直接报列不存在的错误
  • 两个日期列相减得到的是Timedelta时间差对象,不能直接和数字24做大小比较,会引发类型不匹配报错
  • 你写的列表推导只给符合时间差≤24的场景赋值,没有覆盖超过24小时的情况,最后生成的列表长度和DataFrame行数对不上,没法正常赋值

具体实现步骤

  • 先把两个日期列转成标准的datetime格式,避免字符串格式没法计算时间差:
    df['list_date'] = pd.to_datetime(df['list_date'])
    df['sold_date'] = pd.to_datetime(df['sold_date'])
    
  • 直接用pandas自带的向量化运算生成标记,不用写循环,数据量大的时候速度比列表推导快很多:
    # 判断售出和上架的时间差是否在24小时内,把布尔结果转成1/0整数
    df['sold_in_24'] = ((df['sold_date'] - df['list_date']) <= pd.Timedelta(hours=24)).astype(int)
    

结果校验

这套代码跑出来的结果和你给的示例完全匹配:

  • 上架后4小时就售出的商品,标记为1
  • 上架16天后才售出的商品,标记为0
  • 上架后20小时售出的商品,标记为1
  • 如果数据里存在未售出(sold_date为空值)的商品,代码会自动把这类商品的标记判定为0,不需要额外加逻辑处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 19:06:04