Python 使用GroupBy计算数据帧中的自定义速率函数

Python 使用GroupBy计算数据帧中的自定义速率函数,python,pandas,Python,Pandas,我有一个Pandas数据框,其中列COLOR包含分类数据和NaN值- ZIP YEAR COLOR 11111 1990 0 11111 1990 1 11111 1990 NaN 11111 1990 1 22222 2000 0 22222 2000 NaN 22222 2000 NaN 22222 2000 1 如何按

我有一个Pandas数据框,其中列
COLOR
包含分类数据和NaN值-

  ZIP    YEAR    COLOR
11111    1990        0   
11111    1990        1
11111    1990      NaN 
11111    1990        1
22222    2000        0
22222    2000      NaN
22222    2000      NaN
22222    2000        1
如何按
ZIP
YEAR
列(
df.groupby(['ZIP',YEAR'])
)聚合数据,并计算分类数据的比率,以使结果类似于下面的数据框?比率应计算为0的数量除以每个聚合的记录总数。例如,
[1111111990]
df.groupby(['ZIP','YEAR'])
的比率是通过将零(1)的总数相加,然后将该数字除以零和一(3)的总数来计算的,结果是1/3等于0.33

  ZIP    YEAR    COLOR
11111    1990     0.33            
22222    2000     0.50

首先,我们将您的
0
转换为
1
,并以其他方式进行转换

然后我们使用
GroupBy.sum
GroupBy.count

df['COLOR'] = df['COLOR'].sub(1).abs()

grps = df.groupby(['ZIP', 'YEAR'])
dfn = grps.sum().div(grps.count()).reset_index()

     ZIP  YEAR     COLOR
0  11111  1990  0.333333
1  22222  2000  0.500000