pandas - 如何使用其他行中具有公共列值的值替换 nan 值
问题描述
使用 B 列作为参考如何替换 NaN 值
>>> a
A B
1 1
Nan 3
1 1
Nan 1
Nan 2
5 3
1 1
2 2
我想要这样的结果。
>> result
A B
1 1
5 3
1 1
1 1
2 2
5 3
1 1
2 2
我尝试在列上合并,b
但无法弄清楚
b=a.groupby('B').reset_index()
dfM = pd.merge(a,b,on='B', how ='left')
解决方案
我们需要一个从 columnB
中的值到A
.
mapping = a.dropna().drop_duplicates().set_index("B")["A"]
看起来像这样
B
1 1.0
3 5.0
2 2.0
Name: A, dtype: float64
此时填充空值变得无关紧要。我们可以映射B
来获取列A
a["B"].map(mapping)
这给你
0 1.0
1 5.0
2 1.0
3 1.0
4 2.0
5 5.0
6 1.0
7 2.0
Name: B, dtype: float64
A
如果需要,转换为 int 并使用它来覆盖原始数据框中的列。
推荐阅读
- git - 如何在终端(WSL2)中在同一设备上的两个 git 帐户之间切换?
- graph - 尽管纵横比设置为 1,但雷达图仍失真
- javascript - NGINX net::ERR_CONNECTION_REFUSED 与 AWS 中的 PM2 ReactJS 前端和 Express 后端
- javascript - 无法获取 Coinmarketcap API 数据
- puppet - 如何获取应用资源列表
- curl - 是否有与 curl 或 wget 相反的方式将目录上传到 webdav 服务器
- c++ - 在 C++ 运行时错误中出现运行时错误:在 Leetcode 中添加无符号偏移量
- javascript - 根据给定值通过键过滤对象
- python - Pyspark如何过滤RDD Map Function中的数据框?
- r - 如何使用 dplyr 计算二分变量的值比例?