我使用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