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

构建食品推荐系统:DataFrame添加用户偏好行的赋值问题求助

解决食品推荐系统中添加用户偏好行的问题

你的问题出在每次循环都重新创建并赋值df.loc["new_user"],这会覆盖之前的赋值结果,所以最后只有dislike列表里最后一个食材被设为10,其他列都是默认的NaN。

正确的实现思路

我们可以先创建一个和DataFrame列数一致、全为0的Series,然后把用户不喜欢的食材对应的位置设为10,最后再把这个Series添加到DataFrame中作为新行。

改进后的代码

import pandas as pd

def user_pre(df):
    dislike = ["cheese", "egg"]
    # 创建全0的Series,索引和df的列保持一致
    new_user_series = pd.Series(0, index=df.columns)
    # 将不喜欢的食材列批量设置为10
    new_user_series[dislike] = 10
    # 添加到DataFrame中作为新行
    df.loc["new_user"] = new_user_series
    return df

代码解释

  1. pd.Series(0, index=df.columns):生成一个和原DataFrame列名完全匹配的Series,所有值初始化为0,从根源避免了NaN的出现。
  2. new_user_series[dislike] = 10:一次性把所有不喜欢的食材对应的数值设为10,不需要循环逐个赋值,效率更高且不会覆盖之前的设置。
  3. df.loc["new_user"] = new_user_series:将配置好的用户偏好Series作为新行添加到DataFrame中,完美匹配预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:22:28