Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:传递的项目数错误2,放置意味着1_Python_Pandas_Valueerror - Fatal编程技术网

Python ValueError:传递的项目数错误2,放置意味着1

Python ValueError:传递的项目数错误2,放置意味着1,python,pandas,valueerror,Python,Pandas,Valueerror,表如下所示: 问题: 在所有分类为错误范围为0-10%的案例中,对于科目物理,返回学生百分比大于或等于BSchool1(基准)中错误范围为0-10%和科目物理的学生百分比的95%的值表 [IN] import pandas as pd data = [['B1', 'Grade_physics', '0-10%', 70],['B1', 'Grade_physics', '10-20%', 5],['B1', 'Grade_physics', '20-30%', 25],['B1', 'Gra

表如下所示:

问题: 在所有分类为错误范围为0-10%的案例中,对于科目物理,返回学生百分比大于或等于BSchool1(基准)中错误范围为0-10%和科目物理的学生百分比的95%的值表

[IN]

import pandas as pd
data = [['B1', 'Grade_physics', '0-10%', 70],['B1', 'Grade_physics', '10-20%', 5],['B1', 'Grade_physics', '20-30%', 25],['B1', 'Grade_Maths', '10-20%', 20],['B1', 'Grade_Maths', '0-10%', 60],['B1', 'Grade_Maths', '20-30%',20 ],['B2', 'Grade_Maths', '0-10%', 50],['B2', 'Grade_Maths', '10-20%', 15],['B2', 'Grade_Maths', '20-30%', 35],['B2', 'Grade_physics', '10-20%', 30],['B2', 'Grade_physics', '0-10%', 60],['B2', 'Grade_physics', '20-30%',10 ]]
df = pd.DataFrame(data, columns = ['BSchool Name', 'Graded in','Error Bucket','Stu_perc'])
df 
     [OUT]
       BSchool Name      Graded in      Error Bucket  Stu_perc
    0            B1  Grade_physics             0-10%        70
    1            B1  Grade_physics            10-20%         5
    2            B1  Grade_physics            20-30%        25
    3            B1    Grade_Maths            10-20%        20
    4            B1    Grade_Maths             0-10%        60
    5            B1    Grade_Maths            20-30%        20
    6            B2    Grade_Maths             0-10%        50
    7            B2    Grade_Maths            10-20%        15
    8            B2    Grade_Maths            20-30%        35
    9            B2  Grade_physics            10-20%        30
    10           B2  Grade_physics             0-10%        60
    11           B2  Grade_physics            20-30%        10

[IN]:

#Subset of values where error bucket and subject are sliced
filter1 = df['Graded in'].str.contains('Grade_physics')
filter2=df['Error Bucket'].str.contains('0-10%')
df2 = df[filter1 & filter2]

#Compare the value of student percentage in sliced data to benchmark value 
#(in this case student percentage in BSchool1) 
filter3 = df2['BSchool Name'].str.contains('B1')
benchmark_value = df2[filter3]['Stu_perc']
df['Qualifyinglist']=(df2[['Stu_perc']]>=0.95*benchmark_value)
[OUT]:
ValueError: Wrong number of items passed 2, placement implies 1
[IN]:
df['Qualifyinglist']=(df2['Stu_perc']>=0.95*benchmark_value)
[OUT]:
ValueError: Can only compare identically-labeled Series objects
我想做什么:

我们与商学院有合作关系,我们正试图预测每所商学院学生的总体成绩。然后,我们试图根据0-10%、10-20%等数据对预测不准确的案例进行分类。例如,对于商学院1的物理,70%的案例被正确识别,误差在0-10%之间,5%的案例预测误差在10-20%之间,对于商学院1的物理,等等。我们在商学院1的模式是成功的。因此,我们希望看看我们现在可以瞄准哪些商学院

然而,我得到的错误如上所示

这对我没有帮助。请帮忙

val=benchmark_value.iat[0]

df['Qualifyinglist']=df2['Stu_perc'].where(df2['Stu_perc']>=0.95*val)

这对我很有用。

df['Qualifyinglist']=(df2['Stu perc']]>=0.95*基准值)
这行是错误的。您要为Qualifyinglist列分配什么?布尔值或值?基准的值如下:0 70(0为索引)Stu_perc的值如下:0 70 1 60(0和1为索引)。我希望将Stu_perc中的70和60(在数百万行的数据集中有两个以上的值,这只是一个简单的版本)与0.95*基准值(这里的基准值是70)进行比较。我希望返回类似这样的内容:限定列表0701 NULL(因为0.95*基准是66.5,60不满足该标准)