>>> df.unstack(level=0).groupby(df.index.levels[1].map(mapping)).sum()
Academic Group Grp A Grp B Grp C Grp D Grp E
Math.SemGrade
A 43 49 93 82 39
B 24 69 65 59 57
C 20 8 5 23 13
输入数据:
Academic Group Math.SemGrade
Grp A A 13
A+ 17
AD 6
B 1
B+ 6
C 9
C+ 0
D 9
D+ 6
F 20
Grp B A 6
A+ 8
AD 19
B 6
B+ 10
C 24
C+ 5
D 11
D+ 29
F 8
Grp C A 22
A+ 27
AD 16
B 14
B+ 14
C 26
C+ 14
D 0
D+ 25
F 5
Grp D A 29
A+ 23
AD 2
B 11
B+ 17
C 1
C+ 27
D 3
D+ 28
F 23
Grp E A 2
A+ 9
AD 4
B 9
B+ 15
C 18
C+ 10
D 5
D+ 24
F 13
dtype: int64
旧答案
如果要按首字母分组(A -〉A,A+ -〉A,...),可以用途:
>>> (df.groupby(df['Maths Semester Grades'].str[0])
.sum(numeric_only=True).reset_index())
Maths Semester Grades Grp A Grp B Grp C Grp D Grp E
0 A 36 33 65 54 15
1 B 7 16 28 28 24
2 C 9 29 40 28 28
3 D 15 40 25 31 29
4 F 20 8 5 23 13
如果你想控制这些组,使用一个Map字典:
mapping = {'A': 'A', 'A+': 'A', 'AD': 'A', 'B': 'A', 'B+': 'A',
'C': 'B', 'C+': 'B', 'D': 'B', 'D+': 'B',
'E': 'C', 'F': 'C'}
>>> (df.groupby(df['Maths Semester Grades'].map(mapping))
.sum(numeric_only=True).reset_index()
Maths Semester Grades Grp A Grp B Grp C Grp D Grp E
0 A 43 49 93 82 39
1 B 24 69 65 59 57
2 C 20 8 5 23 13
输入 Dataframe :
>>> df
Maths Semester Grades Grp A Grp B Grp C Grp D Grp E
0 A 13 6 22 29 2
1 A+ 17 8 27 23 9
2 AD 6 19 16 2 4
3 B 1 6 14 11 9
4 B+ 6 10 14 17 15
5 C 9 24 26 1 18
6 C+ 0 5 14 27 10
7 D 9 11 0 3 5
8 D+ 6 29 25 28 24
9 F 20 8 5 23 13
1条答案
按热度按时间zbdgwd5y1#
更新
输入数据:
旧答案
如果要按首字母分组(A -〉A,A+ -〉A,...),可以用途:
如果你想控制这些组,使用一个Map字典:
输入 Dataframe :