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

Python Pandas问题:筛选预算内商品名称返回空值求解决

解决Pandas筛选符合预算商品返回空值的问题

问题根源分析

你的代码返回空值大概率是这几个原因:

  • 用max()对商品名称(字符串)取最大值,逻辑完全错误——你要的是符合预算的商品,而非字典序最大的名称;如果没有符合条件的商品,也会返回空。
  • Cost列可能是字符串类型(比如带$符号),导致数值比较失效,筛选不到任何数据。
  • 列名拼写/大小写和DataFrame实际列名不匹配。

修正方案

1. 先处理数据类型(如果Cost是字符串)

如果Cost列带了货币符号(比如$),先转成数值类型:

# 清理Cost列,转成float类型
df['Cost'] = df['Cost'].str.replace('$', '', regex=False).astype(float)

2. 根据需求选择正确的筛选逻辑

  • 需求1:返回所有符合预算的商品名称
def shopping(cash):
    # 筛选出Cost<=cash的所有Name,转成列表返回
    matched_items = df.loc[df['Cost'] <= cash, 'Name'].tolist()
    # 无匹配项时返回空列表
    return matched_items if matched_items else []
  • 需求2:返回符合预算里价格最高的那个商品
def shopping(cash):
    filtered_df = df[df['Cost'] <= cash]
    # 按Cost降序排序后取第一个Name;无匹配项返回None
    if not filtered_df.empty:
        return filtered_df.sort_values('Cost', ascending=False)['Name'].iloc[0]
    else:
        return None

额外检查项

  • 确认DataFrame的列名确实是'Cost'和'Name',别出现大小写错误(比如cost或name)。
  • 测试时传入的cash值是否合理,比如如果所有商品价格都高于cash,自然会返回空/None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:27