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

为何查询非首次订单缺失值返回空索引?代码排查求助

问题:非首次订单中days_since_prior_order是否存在缺失值?

我需要查询非客户首次订单(order_number > 1)里,days_since_prior_order列是否存在缺失值,DataFrame命名为df_orders。原本写的代码想筛选出该列缺失且order_number大于1的数据,但执行后返回空DataFrame,不确定是该用order_number列还是代码本身有问题。

附DataFrame信息:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 478967 entries, 0 to 478966
Data columns (total 6 columns):
     #   Column                  Non-Null Count   Dtype  
    ---  ------                  --------------   -----  
     0   order_id                478967 non-null  int64  
     1   user_id                 478967 non-null  int64  
     2   order_number            478967 non-null  int64  
     3   order_dow               478967 non-null  int64  
     4   order_hour_of_day       478967 non-null  int64  
     5   days_since_prior_order  450148 non-null  float64
dtypes: float64(1), int64(5)
memory usage: 21.9 MB

执行的错误代码:

# Are there any missing values where it's not a customer's first order?
m_v_fo= df_orders[df_orders['days_since_prior_order'].isna() > 1]
print(m_v_fo.head())

执行结果:

Empty DataFrame
Columns: [order_id, user_id, order_number, order_dow, order_hour_of_day, days_since_prior_order]
Index: []

问题分析与修正

你的代码逻辑完全写错了:df_orders['days_since_prior_order'].isna() > 1 这行是错误的。isna()返回的是布尔值(True/False),和1比较时会自动把True转成1,False转成0,所以isna()>1永远是False,自然筛选不到任何数据。

正确的逻辑是同时满足两个条件:

  1. days_since_prior_order 为缺失值(isna() 结果为True)
  2. order_number 大于1(非首次订单)

修正后的代码:

# 筛选非首次订单且days_since_prior_order缺失的数据
m_v_fo = df_orders[(df_orders['days_since_prior_order'].isna()) & (df_orders['order_number'] > 1)]
print(m_v_fo.head())

补充验证

从你的DataFrame统计来看,days_since_prior_order共有 478967 - 450148 = 28819 个缺失值。这类字段的缺失通常只出现在首次订单(order_number=1)里——因为首次订单没有前序订单,所以没有“距上一次订单的天数”这个数据。你可以运行下面的代码验证缺失值对应的order_number分布:

# 查看缺失值对应的order_number统计
print(df_orders[df_orders['days_since_prior_order'].isna()]['order_number'].value_counts())

如果验证后发现所有缺失值都对应order_number=1,那修正后的代码返回空DataFrame是正常的,说明非首次订单里确实没有该字段的缺失值,这是数据本身的特征,不是代码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:05:39