Python项目评审员分配代码语法错误求助及条件抽样实现
项目评审员分配代码语法错误修复
问题背景
- 需实现项目评审员分配功能,核心规则:项目作者不能被分配为自身portfolio内项目的评审员
- 已有包含
project和portfolio字段的数据集、人员姓名数组 - 使用Python 3 + Jupyter Notebook,现有代码报语法错误,需本周前修复
现有错误代码
import pandas as pd # Load dataframe df = pd.read_csv(dir_path, index_col = 0) first = df["portfolio"] print(first) Update2 # Select 6 random projects for Moi which are not "XXX" #random dataframe import numpy as py df2 = pd.read_csv(dir_path, skiprows=1) np.random.seed(100) df2 = pd.DataFrame(np.random.randint(10, size=(6,2)), columns=list('project portfolio') if ((portfolio == "XYZ") or (portfolio == "ABC") or (portfolio == "MKZ") or (portfolio == "BNZ")) print (df2)
报错信息
Error message File "<ipython-input-29-0ee5224a45db>", line 7 print (df2) ^ SyntaxError: invalid syntax
错误分析与修复代码
核心错误点
- numpy导入别名错误:
import numpy as py应改为import numpy as np,否则后续np.random无法调用 - 三元表达式不完整:Python的三元表达式必须是
a if cond else b的完整结构,原代码缺少else分支 - 无效代码片段:
Update2未加注释,属于无效语句 - 逻辑冲突:既从CSV读取
df2又用随机数生成DataFrame,两者功能重复;portfolio变量未定义,直接调用会触发NameError - 业务逻辑偏离:原代码生成随机数矩阵不符合“从现有数据集选项目”的需求
修复后的代码(贴合业务需求)
import pandas as pd import numpy as np # 加载原始数据集 df = pd.read_csv(dir_path, index_col=0) print("原始portfolio列数据:") print(df["portfolio"]) # 定义目标portfolio集合(排除XXX相关项目,这里按需求指定允许的portfolio) allowed_portfolios = ["XYZ", "ABC", "MKZ", "BNZ"] # 过滤出符合条件的项目(排除作者自身portfolio的逻辑可后续基于人员数组扩展) filtered_projects = df[df["portfolio"].isin(allowed_portfolios)] # 设置随机种子保证结果可复现,随机选择6个项目 np.random.seed(100) selected_projects = filtered_projects.sample(n=6, replace=False) print("\n随机选中的6个符合要求的项目:") print(selected_projects)
补充说明
- 若要实现“排除作者自身portfolio项目”的核心规则,可基于人员姓名数组添加过滤逻辑:
# 假设当前分配的评审员是"Moi",其对应的portfolio为"XXX" reviewer_portfolio = "XXX" filtered_projects = df[~df["portfolio"].eq(reviewer_portfolio)]
内容的提问来源于stack exchange,提问作者Jeaniewiththelightbrownhair
相关产品推荐
相关产品推荐

