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

循环内提取值过滤DataFrame返回空结果,直接过滤却正常的技术问题

问题解决:循环过滤DataFrame返回空结果的原因与修复

核心原因:数据类型不匹配

直接赋值的code = 46897是整数类型,但从df_products["ProductCode"][el]提取的code看起来是46897,实际大概率是字符串类型(比如"46897")。不同类型的数值无法匹配,导致过滤条件df["ProductCode"]==code返回全False,最终得到空DataFrame。

验证方法

打印两个场景下code的类型,确认差异:

# 直接赋值场景
code = 46897
print(type(code))  # 输出 <class 'int'>

# 循环场景
for el in range(0, 1):
    code = df_products["ProductCode"][el]
    print(type(code))  # 大概率输出 <class 'str'>

修复方案

方案1:统一DataFrame列类型

把df的ProductCode列转换成和df_products一致的类型:
如果df_products里是字符串类型:

df["ProductCode"] = df["ProductCode"].astype(str)

如果df_products里是整数类型(且列中无非数值内容):

df["ProductCode"] = df["ProductCode"].astype(int)

方案2:循环中转换提取值的类型

在循环里把提取的code转换成和df一致的类型:

for el in range(0, 1):
    code = df_products["ProductCode"][el]
    # 若df中是整数类型,转成int
    code = int(code)
    print(len(df[df["ProductCode"]==code]))  # 此时会返回正确的52

额外建议

避免直接用索引[el]提取DataFrame元素,推荐用.iloc[el]更安全:

code = df_products["ProductCode"].iloc[el]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:26:01