Dataframe:
STUD_ID CLASS GRADE CATEGORY
1 'Sci' 2 'Alpha'
2 'Sci' 7 undefined
3 'Sci' 9 'Alpha'
4 'Sci' NaN 'Alpha'
5 'Sci' 9 'Alpha'
6 'math' 9 undefined
7 'eng' 8 'Gamma'
8 'eng' 5 'Gamma'
9 'eng' 3 undefined
10 'Art' 3 'Lambda'
11 'Art' 8 'Lambda'
12 'Art' 5 undefined
13 'Art' 1 undefined
14 'Art' NaN undefined我期待着决定是否学生类别‘未定’实际上是另一个类别,是存在于该特定的班级。要知道这一点,它应该检查“未定义”类别学生的成绩是否介于该班其他类别的最小最高分之间。
例如,第2行中的学生有“未定义的类别”:该类别应该改为'Alpha‘,因为它的7年级介于'Alpha’min和最高年级(2和9)之间。‘'Alpha’是'Sci‘类的另一个类别。
例如,相反的情况,第9行的学生。它的类别不应该改为“Gamma”,因为它的3年级不属于“Gamma”的年级范围(5-8)。‘'Gamma’是'eng‘班的另一类。
例如,在第14行中,“未定义”不应更改,因为是不可比较的。
例如,第6行中的“”(未定义)不应更改,因为没有其他类别。
结果
STUD_ID CLASS GRADE CATEGORY
1 'Sci' 2 'Alpha'
2 'Sci' 7 'Alpha' *
3 'Sci' 9 'Alpha'
4 'Sci' NaN 'Alpha'
5 'Sci' 9 'Alpha'
6 'math' 9 undefined
7 'eng' 8 'Gamma'
8 'eng' 5 'Gamma'
9 'eng' 3 undefined
10 'Art' 3 'Lambda'
11 'Art' 8 'Lambda'
12 'Art' 5 'Lambda' *
13 'Art' 1 undefined
14 'Art' NaN undefined对于第一个未定义的。在我访问“科学”组之后,我如何访问“Alpha”的等级组?
我知道这可以访问当前的类组。
df.loc[df['CATEGORY'] == 'undefined', 'CATEGORY'] = df.groupby('CLASS')...如果像下面这样的东西可以同时访问类和类别(“未定义的”除外),那就太好了。
func = lambda series : ...get min and max of series...
df.loc[df['CATEGORY'] == 'undefined', 'CATEGORY'] = df.groupby('CLASS').groupby('CATEGORY').where('CATEGORY'!='undefined').transform(func)..怎么做?创建助手步骤列的答案也会有效。
发布于 2019-05-09 23:36:05
检查以下内容是否对您有效:
https://stackoverflow.com/questions/56068339
复制相似问题