使用GroupBy计算熊猫数据框中的自定义比率函数

时间:2020-02-16 23:53:29

标签: python pandas

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

COLOR

如何通过 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'])df.groupby(['ZIP', 'YEAR'])的比率是通过将零的总数(1)相加,然后将该数字除以零和1的总数之和(3)得出的在1/3中为0.33。

[11111, 1990]

1 个答案:

答案 0 :(得分:1)

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

然后我们使用GroupBy.sumGroupBy.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