python - 用该组中的第一个非空值填充组中的所有值
问题描述
以下是我拥有的熊猫数据框:
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
与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
推荐阅读
- javascript - 将vue组件表单字段和数据值与vue父组件传入的prop同步
- apache-zeppelin - [Zeppelin]无法在停止的 SparkContext 上调用方法
- amazon-web-services - 使用 HTTPS 的 AWS 托管
- javascript - 关闭灯箱有时会比输入时的 onblur() 更快
- sql - SQLite:外键“ON DELETE SET NULL”操作未触发
- python - python的列表切片效率如何?
- google-cloud-storage - StreamingFileSink 无法重命名正在进行的文件
- reactjs - React Native:使用反应导航时屏幕不会重新渲染或触发 useEffect()
- laravel-5 - [Symfony\Component\Debug\Exception\FatalThrowableError]
- docker - docker-compose.yml 端口上的报价有什么不同吗?