根据数据框中索引名称的一部分求和列值

Kha*_*oti 5 python pandas

我有以下数据框,它是 groupby 操作的结果。

Gender          F     M
Grade letter
D            NaN   1.0
D+            7.0  2.0
C-            3.0  2.0
C             3.0  4.0
C+            9.0  12.0
B-            8.0  10.0
B             6.0  3.0
B+            5.0  7.0
A-            7.0  4.0
A             2.0  4.0
A+            1.0 NaN
Run Code Online (Sandbox Code Playgroud)

我想结合像 D、C、B、A 这样的等级字母而忽略后缀 (-, +)。

所需的输出类似于

Gender          F     M
Grade letter
D             7.0   3.0
C             15.0 18.0
B             19.0 20.0
A             10.0 8.0
Run Code Online (Sandbox Code Playgroud)

我尝试了此处提供的解决方案,但它不适合我。

df.groupby(df.index.to_series().str[0]).size().unstack(fill_value=0)
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 4

您可以聚合sum,也可以省略第一个字母.to_series()

df1 = df.groupby(df.index.str[0], sort=False).sum()
print (df1)
           F     M
Gender            
D        7.0   3.0
C       15.0  18.0
B       19.0  20.0
A       10.0   8.0
Run Code Online (Sandbox Code Playgroud)