Skip to main content
 首页 » 编程设计

python之Pandas:如何通过特定列值的值获取行计数,并将计数添加为另一列。

2025年05月04日23fff_TT

假设我的数据看起来像这样,其中所有数据都按 b 列中的值排序

a   b 
1   32 
4   32 
5   32 
9   45 
8   45 
3   76 
5   76 
7   76 
9   76 

让第一行包含特定列值的最有效方法是特定列值出现的总次数。对于具有相同列值的其余行,我希望它们是不同的值(字符串、-1、nan 等,但不是正整数)。在下面的示例中,我使用“-1”作为不同的值

a   b   count b 
1   32  3 
4   32  -1 
5   32  -1 
9   45  2 
8   45  -1 
3   76  4 
5   76  -1 
7   76  -1 
9   76  -1 

因此在上表中,第 b 列为 32 的第一行的“Count b”值为 3,然后列为 32 的其余行的“Count b”值为 -1 .

请您参考如下方法:

首先计算跨度长度:

df = df.merge(df.groupby('b').size().reset_index()) 
#   a   b  0 
#0  1  32  3 
#1  4  32  3 
#2  5  32  3 
#3  9  45  2 
#4  8  45  2 
#5  3  76  4 
#6  5  76  4 
#7  7  76  4 
#8  9  76  4 

将每个跨度中的重复长度替换为-1:

df.loc[df.duplicated(subset=['b',0]), 0] = -1 
 
#   a   b  0 
#0  1  32  3 
#1  4  32 -1 
#2  5  32 -1 
#3  9  45  2 
#4  8  45 -1 
#5  3  76  4 
#6  5  76 -1 
#7  7  76 -1 
#8  9  76 -1