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

嵌套for循环统计DataFrame时段客群数全为0,求原因及修正

问题原因与修正方案

为什么循环统计结果全为0?

核心原因是类型不匹配:DataFrame中的REGIS_DAY和REGIS_HOUR字段是字符串类型,但循环里用来做比较的i+1(日期值)和j(小时值)都是整数类型。字符串与整数进行相等判断时,永远会返回False,导致每次计算number.sum()得到的都是0,最终整个data_3124数组全为0。

修正方法

方法1:将循环中的整数转为字符串

把循环里的日期、小时值转为字符串,和DataFrame的字段类型保持一致:

data_3124 = np.zeros((31,24), dtype = float)
for i in range(31):
    for j in range(24):
        # 把整数转为字符串,匹配字段类型
        number = (df.REGIS_DAY == str(i+1)) & (df.REGIS_HOUR == str(j))
        data_3124[i,j] = number.sum()

方法2:先转换DataFrame字段为整数类型

先把REGIS_DAY和REGIS_HOUR字段转为整数,再使用原循环逻辑:

# 转换字段类型为整数
df['REGIS_DAY'] = df['REGIS_DAY'].astype(int)
df['REGIS_HOUR'] = df['REGIS_HOUR'].astype(int)

# 原循环代码无需修改
data_3124 = np.zeros((31,24), dtype = float)
for i in range(31):
    for j in range(24):
        number = (df.REGIS_DAY == (i+1)) & (df.REGIS_HOUR == j)
        data_3124[i,j] = number.sum()

注意:虽然嵌套循环可以解决问题,但groupby方法更简洁高效,尤其是当数据量较大时,推荐优先使用groupby的统计方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:37:06