如何基于条件用其他单元格值为pandas DataFrame缺失单元格赋值
Pandas按分组填充列缺失值解决方案
前提说明
如果你的DataFrame中x列的缺失值为字符串类型的'None',需要先替换为Pandas可识别的空值np.nan,如果本身就是原生None/空值可跳过该步骤。
实现代码
import pandas as pd import numpy as np # 构造示例数据,实际使用时替换为你自己的DataFrame即可 df = pd.DataFrame({ 'x': ['xyz', 'lmn', None, 'xyz', 'qrs', None], 'a': ['A', 'B', 'A', 'A', 'C', 'B'] }) # 替换字符串形式的None为空值(按需执行) df['x'] = df['x'].replace('None', np.nan) # 核心逻辑:按a列分组,用同组x列的非空值填充缺失值 # 写法1:适配非空值在分组内任意位置的场景,兼容性最好 df['x'] = df.groupby('a')['x'].transform(lambda g: g.ffill().bfill()) # 写法2:如果确认每个a分组对应的x非空值唯一,该写法性能更高 # df['x'] = df['x'].fillna(df.groupby('a')['x'].transform('first'))
结果验证
执行后输出的df和你预期的处理结果完全一致:
| x | a |
|---|---|
| xyz | A |
| lmn | B |
| xyz | A |
| xyz | A |
| qrs | C |
| lmn | B |
内容的提问来源于stack exchange,提问作者Lesley
相关产品推荐
相关产品推荐

