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

基于Rating和Metascore计算新平均分遇语法错误求助

问题原因与解决办法

错误原因

  1. 缩进语法错误:Python是缩进敏感语言,else语句必须和对应的if保持同一缩进级别。你的代码中else前面多了一个缩进(与if块内的语句同缩进),导致语法解析失败。
  2. 逻辑错误:DF1["Votes"].all() < 100是判断所有行的Votes值是否都小于100,这和你需求中“逐行根据Votes值处理”的逻辑不符,会导致整个DataFrame只能执行一种赋值操作,无法实现行级别的条件判断。

正确实现代码

推荐两种高效的实现方式:

方式1:使用numpy.where(矢量化操作,效率最优)

import pandas as pd
import numpy as np

# 逐行判断Votes是否小于100,分别赋值Metascore或两列均值
DF1["New Average Score"] = np.where(
    DF1["Votes"] < 100,
    DF1["Metascore"],
    DF1[["Metascore", "Rating"]].mean(axis=1)
)

方式2:使用Pandas loc索引(逻辑清晰,易读性强)

import pandas as pd

# 先给所有行赋值两列均值
DF1["New Average Score"] = DF1[["Metascore", "Rating"]].mean(axis=1)
# 对Votes小于100的行,覆盖为Metascore的值
DF1.loc[DF1["Votes"] < 100, "New Average Score"] = DF1["Metascore"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:25