Python 使用GroupBy计算数据帧中的自定义速率函数
我有一个Pandas数据框,其中列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 如何按
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