如何获取非空值的百分比



我使用python 3.7.6运行,dataframe如下:

f_value      desc
1    f1            null
2    f2            null
3    f1            TBD1
4    f3            TBD2
5    f4            TBD4
6    f1            TBD5

我想按f_value分组,并在desc列上获得的百分比:非null值的百分比。

类似于:

f_value      res_prec
1    f1            66%
2    f2            0
3    f3            100%
4    f4            100%

我该怎么做?

您可以通过Series.notna为非缺失值通信值,并聚合mean的出现百分比,然后乘以100,转换为整数,转换为字符串,添加百分比%:

df1 = (df['desc'].notna()
.groupby(df['f_value'])
.mean()
.mul(100)
.astype(int)
.astype(str)
.add('%')
.reset_index())
print (df1)
f_value  desc
0      f1   66%
1      f2    0%
2      f3  100%
3      f4  100%

详细信息

print (df['desc'].notna().groupby(df['f_value']).mean())
f_value
f1    0.666667
f2    0.000000
f3    1.000000
f4    1.000000
Name: desc, dtype: float64

最新更新