遍历数据帧并计数的for循环

2024-04-28 13:28:59 发布

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

我有一个与此类似的数据帧:

id    count  
252    0
232    1
325    1
736    2
253    3
252    2
232    3
736    2

我正在尝试获取大于范围(0,3)的“唯一id数”

df[(df['count'] >= 0)].id.nunique()
df[(df['count'] >= 1)].id.nunique()
df[(df['count'] >= 2)].id.nunique()
df[(df['count'] >= 3)].id.nunique()


The returned columns shouuld be:
    id    count    return
        252    0     6   the number of unique id that is larger than 0 
        232    1     5   the number of unique id that is larger than 1 
        325    1     5
        736    2     3
        253    3     1
        252    0     6
        232    1     5
        736    2     3

我之所以使用排名是因为我的数据集很大。然而,排名不是从零开始计算的。有没有更简单的方法可以从零开始排名

还有,还有其他方法可以提高代码的效率和运行速度吗

df['return'] = df.groupby('count').id.transform('nunique').rank(asending= True, method = 'max')

1条回答
网友
1楼 · 发布于 2024-04-28 13:28:59
In [395]: df                                                                                                                                                                                                                                                                  
Out[395]: 
    id count
0  252     0
1  232     1
2  325     1
3  736     2
4  253     3
5  252     2
6  232     3
7  736     2

In [396]: df['return'] = None                                                                                                                                                                                                                                                 

In [397]: for c in df['count'].unique(): 
     ...:     df['return'][df['count'] >= c] = df[df['count'] >= c]['id'].nunique() 
     ...:      
     ...:                                                                                                                                                                                                                                                                     

In [398]: df                                                                                                                                                                                                                                                                  
Out[398]: 
    id count return
0  252     0      5
1  232     1      5
2  325     1      5
3  736     2      4
4  253     3      2
5  252     2      4
6  232     3      2
7  736     2      4

相关问题 更多 >