Pandas中如何将另一列的值赋值给指定列的空单元格
pandas 空值列按同行另一列值填充实现方案
针对district列空值取对应行city列值填充的需求,直接使用pandas内置方法即可实现,无需手写逐行循环,执行效率高、代码简洁。
核心实现代码
最推荐使用fillna方法,语义直观可读性强:
df["district"] = df["district"].fillna(df["city"])
也可以使用combine_first方法实现完全一致的效果:
df["district"] = df["district"].combine_first(df["city"])
逻辑说明
- 当
fillna接收Series类型作为填充参数时,会自动按照行索引匹配对应位置的值,仅对值为NaN的单元格执行填充,district列原本非空的取值会完全保留,完全匹配需求逻辑。 - 两种方法运行后得到的结果完全一致,日常开发优先选
fillna写法即可,其他协作者能快速识别代码意图。
特殊场景适配
如果你的district列空值不是标准NaN格式(比如是空字符串、"缺失"这类自定义的空值标记),可以先将这类值统一替换为标准空值,再执行填充操作:
import numpy as np # 把自定义空值标记替换为标准NaN后再填充 df["district"] = df["district"].replace(["", "NaN", "缺失", "无"], np.nan).fillna(df["city"])
执行完上述代码后,得到的结果和预期完全一致:
| code | city | district |
|---|---|---|
| 01 | London | Westminster |
| 03 | Madrid | Madrid |
| 04 | Rome | Trevi |
| 07 | Berlin | Berlin |
| 08 | Barcelona | Badalona |
内容的提问来源于stack exchange,提问作者Carola
相关产品推荐
相关产品推荐

