慕姐8265434
在解决你的问题时,我还想看看是否可以获得 B 的平均百分比(同时忽略 0)。我在获得计数的同时也能够完成此任务。本练习的数据框: A B C0 a1 B1 0.001 a1 B1 0.002 a1 B1 98.873 a1 B1 101.104 a1 B2 106.675 a1 B2 103.006 a2 B1 0.007 a2 B1 0.008 a2 B1 33.009 a2 B1 100.0010 a2 B2 80.0011 a3 B1 90.0012 a3 B2 99.00排除零的情况下求平均值为此我必须.replace(0, np.nan)在 groupby 函数之前添加。A = ['a1','a1','a1','a1','a1','a1','a2','a2','a2','a2','a2','a3','a3']B = ['B1','B1','B1','B1','B2','B2','B1','B1','B1','B1','B2','B1','B2']C = [0,0,98.87,101.1,106.67,103,0,0,33,100,80,90,99]import pandas as pdimport numpy as npdf = pd.DataFrame({'A':A,'B':B,'C':C})df = pd.DataFrame(df.replace(0, np.nan) .groupby(['A', 'B']) .agg({'B':'size','C':['count','mean']}) .rename(columns={'size':'Count','count':'Passed','mean':'Avg Score'})).unstack(level=1)df.columns = df.columns.droplevel(0) Count Passed Avg Score B B1 B2 B1 B2 B1 B2A a1 4 2 2 2 99.985 104.835a2 4 1 2 1 66.500 80.000a3 1 1 1 1 90.000 99.000