Pandas:获取按其他列分组后不为空的元素数的百分比

2024-09-29 21:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个具有以下值的数据帧:

    name     start    end     description
0    ag       20       30       None
1    bgb      21       111      'a'
2    cdd      31       101      None
3    bgb      17       19       None
4    ag       20       22       None
5    ag       1        65       'avc'

我想按name分组,然后获取每个组namedescription数量的百分比,即not null

对于我展示的示例,我希望看到:

    name     percent 
0    ag       33.3      
1    bgb      50
2    cdd      0 

我怎么做


Tags: 数据namenone示例数量notdescriptionstart
1条回答
网友
1楼 · 发布于 2024-09-29 21:34:32

聚合由^{}创建的布尔掩码的mean,然后乘以100并在必要时取整:

df1 = (df['description'].notna()
                        .groupby(df['name'])
                        .mean()
                        .mul(100)
                        .round(2)
                        .reset_index(name='percent'))
print (df1)
  name  percent
0   ag    33.33
1  bgb    50.00
2  cdd     0.00

替换为^{}

df1 = (df.assign(percent=df['description'].notna())
         .groupby('name')['percent']
         .mean()
         .mul(100)
         .round(2)
         .reset_index())

相关问题 更多 >

    热门问题