如何包含所有数据框列

我在这里有一个问题。 我编写的程序可以做到这一点

df = pd.DataFrame({'STREAM':['EAGLE','HAWK','NORTH','HAWK','EAGLE','HAWK','NORTH'],'MAT':['A','D','F','D','C','C','E'],'KIS':['B','D','E','D','A','C','D']})

columns = ["A","B","C","D","E", "F"]

a = (pd.crosstab(df.STREAM,df.MAT, margins=True, margins_name='TOTAL').iloc[:,:-1].reindex(columns, axis=1, fill_value=0).rename_axis(None))
saved = a.to_csv(index=False)
a['TOT'] = a.sum(axis=1)
a['MEAN'] = a.mean(axis=1).round(2)
def x(i):
    if i >5:
        grade='A'
    else:
        grade='E'
    return grade
a['GRD'] = a.MEAN.apply(x)
print(a)

这让我得到了一个结果

MAT    A  B  C  D  E  F  TOT  MEAN GRD
EAGLE  1  0  1  0  0  0    2  0.57   E
HAWK   0  0  1  2  0  0    3  0.86   E
NORTH  0  0  0  0  1  1    2  0.57   E
TOTAL  1  0  2  2  1  1    7  2.00   E

这接近我想要的,但是有一个问题,仅包括MAT。我是否可以在表格中同时包含“ MAT”和“ KIS”的总观测值,还可以删除表格左上角的名称“ MAT”(空白)?

编辑 预期产量

       A  B  C  D  E  F  TOT  MEAN GRD
EAGLE  2  1  1  0  0  0    4  0.??   E
HAWK   0  0  2  4  0  0    6  0.??   E
NORTH  0  0  0  1  2  1    4  0.??   E
TOTAL  2  1  3  5  2  1   14  ??     E
评论