通过Series.value_counts()用归一化的数字设置小数位

时间:2018-09-23 00:04:21

标签: python pandas series

我正在尝试获取数据百分比。

    counts  
Win                         
BLUE 90729  
RED  86010

我使用了df['counts'].value_counts(normalize = True)
并返回

86010    0.5
90729    0.5
Name: matchid, dtype: float64

我如何计算它们至少到小数点后两位?

2 个答案:

答案 0 :(得分:3)

将计数除以它们的总和:

df['counts'] / df['counts'].sum()
#       counts
#Win          
#BLUE  0.51335
#RED   0.48665

在您的原始解决方案中,有一个90729的一个实例和一个86010的一个实例。这就是value_counts对于90729返回1以及对于86010返回1的原因。 (归一化后,两者均精确变为0.5)。

答案 1 :(得分:1)

df['perc'] = df['counts'].apply(lambda x: x/np.sum(df['counts']))

输出:

BLUE    0.51335
RED     0.48665