我有这个DataFrame df
:
ID EVAL
11 1
11 0
22 0
11 1
33 0
44 0
22 1
11 1
我需要估算两个组中EVAL
等于1和0的行的百分比:组1包含IDs
重复次数大于或等于3次的df
}。第2组包含IDs
,在df
中重复次数少于3次。
结果应该是这个:
GROUP EVAL_0 EVAL_1
1 25 75
2 75 25
答案 0 :(得分:1)
您可以使用value_counts()
获取重复三次或更多次的ID的百分比,然后使用带有mean
的布尔索引。
>>> (df.ID.value_counts() >= 3).mean()
0.25
这是作品的要点,但取决于你想要用它做什么,如果你想要像你的那样输出你可以创建一个DataFrame
>>> g1_perc = (df.ID.value_counts() >= 3).mean()
>>> pd.DataFrame(dict(group=[1, 2], perc_group=[g1_perc*100, (1-g1_perc)*100]))
group perc_group
0 1 25.0
1 2 75.0
相反百分比的第二列看起来对我来说有点不用了。