python - 如何通过查找其他行来替换 DataFrame 中的空值
问题描述
请考虑以下DataFrame
代码
from datetime import datetime
import pandas as pd
lookup = pd.DataFrame([
['IJK', '009', None],
['DEF', None, 'CM002'],
['GHI', '003', 'CM003'],
['GHI', None, 'CM004'],
], columns=['Key', 'Lookup1', 'Lookup2'])
我的问题是关于在列中有键GHI
的行。我想找到一种简单的方法,用003
具有相同键列的另一行的同一列中的给定值替换空值(无)
所以,我希望从这种情况入手:
| | Key | Lookup1 | Lookup2 |
|---|-----|---------|---------|
| 0 | IJK | 009 | None |
| 1 | DEF | None | CM002 |
| 2 | GHI | None | CM003 |
| 3 | GHI | 003 | CM004 |
并到达这种情况
| | Key | Lookup1 | Lookup2 |
|---|-----|---------|---------|
| 0 | IJK | 009 | None |
| 1 | DEF | None | CM002 |
| 2 | GHI | 003 | CM003 |
| 3 | GHI | 003 | CM004 |
编辑:
- 更新示例以添加空行位于另一行之前的情况
解决方案
以这种方式尝试:
lookup.groupby("Key")[["Key","Lookup1","Lookup2"]].fillna(method='ffill')
输出:
Key Lookup1 Lookup2
0 IJK 009 None
1 DEF None CM002
2 GHI 003 CM003
3 GHI 003 CM004
编辑
在这种情况下:
lookup = pd.DataFrame([
['IJK', '009', None],
['DEF', None, 'CM002'],
['GHI', None, 'CM004'],
['GHI', '003', 'CM003'],
["ABC",'001',"CM002"],
["ABC",None,"CM005"]
], columns=['Key', 'Lookup1', 'Lookup2'])
您可以填写两个方向:
lookup.groupby("Key")[["Key","Lookup1","Lookup2"]].fillna(method='ffill').groupby("Key")[["Key","Lookup1","Lookup2"]].fillna(method='bfill')
输出:
Key Lookup1 Lookup2
0 IJK 009 None
1 DEF None CM002
2 GHI 003 CM004
3 GHI 003 CM003
4 ABC 001 CM002
5 ABC 001 CM005
推荐阅读
- gtk - 缺少用于构建 libgtkwebkit 的 libsoup3
- c++ - 将无符号值分配给整数数据类型
- sql-server - Dbeaver 到 SQL Server 的连接
- excel - 如何在列中获取重复项并使用其他特定列复制到另一张表中
- javascript - 如何在不使用 JavaScript 中的内置函数的情况下将字符串大写转换为小写
- android - Android Navigation - 导航时弹出当前片段
- firebase - 颤动的火力基地中的snapshot.data为空
- jquery - 如何在 $.each 函数内的 .on(click) 上返回当前 ID - jQuery
- sapui5 - sap.ui.table.Table 中的单选单选按钮
- angular - 使用 Mat 对话框在 Angular 中单元测试失败