Python 从列表列表中引用列表

Python 从列表列表中引用列表,python,function,pandas,iteration,Python,Function,Pandas,Iteration,我有两个数据帧 为学生评分的一张记分卡 第二个是一个学生数据集 我想对给定的学生数据集应用计分卡来计算分数并将其汇总。我正在尝试开发一个通用函数,它采用 记分卡,适用于任何学生分数数据集 import pandas as pd score_card_data = { 'subject_id': ['MATHS', 'SCIENCE', 'ARTS'], 'bin_list': [[0,25,50,75,100], [0,20,40,60,80,100], [0,2

我有两个数据帧 为学生评分的一张记分卡 第二个是一个学生数据集

我想对给定的学生数据集应用计分卡来计算分数并将其汇总。我正在尝试开发一个通用函数,它采用 记分卡,适用于任何学生分数数据集

import pandas as pd
score_card_data = {
        'subject_id': ['MATHS', 'SCIENCE', 'ARTS'],
        'bin_list': [[0,25,50,75,100], [0,20,40,60,80,100], [0,20,40,60,80,100]], 
        'bin_value': [[1,2,3,4], [1,2,3,4,5], [3,4,5,6,7] ]}
score_card_data = pd.DataFrame(score_card_data, columns = ['subject_id', 'bin_list', 'bin_value'])
score_card_data

student_scores = {
        'STUDENT_ID': ['S1', 'S2', 'S3','S4','S5'],
        'MATH_MARKS': [10,15,25,65,75], 
        'SCIENCE_MARKS': [8,15,20,35,85],
        'ARTS_MARKS':[55,90,95,88,99]}
student_scores = pd.DataFrame(student_scores, columns = ['STUDENT_ID', 'MATH_MARKS', 'SCIENCE_MARKS','ARTS_MARKS'])
student_scores
功能 定义垃圾箱 将容器应用到柱上

bins = list(score_card_data.loc[score_card_data['subject_id'] == 'MATHS', 'bin_list'])
student_scores['MATH_SCORE'] = pd.cut(student_scores['MATH_MARKS'],bins, labels='MATHS_MARKS')

Error:ValueError: object too deep for desired array
我试图将cellvalue转换为字符串,它被检测为一个对象。有办法解决吗

如何使函数更通用

谢谢
Pari

您只需使用
bin[0]
来提取
列表
,否则会引发
值错误

bins[0]
[0, 25, 50, 75, 100]

type(bins[0])
<class 'list'>

student_scores['MATH_SCORE'] = pd.cut(student_scores['MATH_MARKS'], bins[0])

  STUDENT_ID  MATH_MARKS  SCIENCE_MARKS  ARTS_MARKS MATH_SCORE
0         S1          10              8          55    (0, 25]
1         S2          15             15          90    (0, 25]
2         S3          25             20          95    (0, 25]
3         S4          65             35          88   (50, 75]
4         S5          75             85          99   (50, 75]
bin[0]
[0, 25, 50, 75, 100]
类型(存储箱[0])
学生分数['MATH_分数]]=pd.cut(学生分数['MATH_分数]],bins[0])
学生ID数学分数科学分数艺术分数数学分数分数
0 S1 10 8 55(0,25]
1 S2 15 90(0,25]
2 S3 25 20 95(0,25]
3 S4 65 35 88(50,75]
4 S5 75 85 99(50,75]
我省略了
标签
,因为您需要提供一个包含四个标签的列表,因为其中有五个截止线/箱边