我有一个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]
答案 0 :(得分:1)
首先,我们将您的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