Skip to main content
 首页 » 编程设计

python之用该组中的第一个非空值填充该组中的所有值

2025年05月04日14oomusou

以下是我的 pandas 数据框:

cluster Value 
1         A 
1        NaN 
1        NaN 
1        NaN 
1        NaN 
2        NaN 
2        NaN 
2         B 
2        NaN 
3        NaN 
3        NaN 
3         C 
3        NaN 
4        NaN 
4         S 
4        NaN 
5        NaN 
5         A 
5        NaN 
5        NaN 

如果我们查看数据,簇 1 的一行的值为“A”,并且其余所有值为 NA 值。我想为集群 1 的所有行填充“A”值。同样适用于所有集群。基于集群的其中一个值,我想填充集群的剩余行。输出应该是这样的,

cluster Value 
1         A 
1         A 
1         A 
1         A 
1         A 
2         B 
2         B 
2         B 
2         B 
3         C 
3         C 
3         C 
3         C 
4         S 
4         S 
4         S 
5         A 
5         A 
5         A 
5         A 

我是 python 的新手,不知道如何进行。有人可以帮忙吗?

请您参考如下方法:

groupby + bfill, 和ffill

df = df.groupby('cluster').bfill().ffill() 
df 
 
    cluster Value 
0         1     A 
1         1     A 
2         1     A 
3         1     A 
4         1     A 
5         2     B 
6         2     B 
7         2     B 
8         2     B 
9         3     B 
10        3     B 
11        3     C 
12        3     C 
13        4     S 
14        4     S 
15        4     S 
16        5     A 
17        5     A 
18        5     A 
19        5     A 

或者,

groupby + transform with first

df['Value'] = df.groupby('cluster').Value.transform('first') 
df 
 
    cluster Value 
0         1     A 
1         1     A 
2         1     A 
3         1     A 
4         1     A 
5         2     B 
6         2     B 
7         2     B 
8         2     B 
9         3     B 
10        3     B 
11        3     C 
12        3     C 
13        4     S 
14        4     S 
15        4     S 
16        5     A 
17        5     A 
18        5     A 
19        5     A