You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中当前列值为空时取另一列值的高效实现方法

更高效的空值/空白替换方法

你当前用apply逐行处理的方式在数据量较大时效率很低,本质是Python层面的循环开销导致的。推荐用pandas的矢量化操作实现,速度能提升几个数量级,代码也更简洁:

方法1:使用mask(推荐)

mask会在满足条件时用指定值替换原数据,正好匹配你的需求——当column1是空/空白字符串时,用column2替换:

import pandas as pd

# 先去除字符串两端空格,再判断是否为空,符合"空白"的定义
df['column1'] = df['column1'].mask(df['column1'].str.strip() == '', df['column2'])

方法2:使用where

where和mask逻辑相反,当条件不满足时保留原数据,满足时替换,写法如下:

df['column1'] = df['column2'].where(df['column1'].str.strip() == '', df['column1'])

方法3:同时处理NaN和空/空白

如果你的场景里还需要处理column1为NaN的情况,可以先把空/空白转成缺失值,再用fillna填充:

# 先去除空格,把空字符串转为pd.NA,再用column2填充所有缺失值
df['column1'] = df['column1'].str.strip().replace('', pd.NA).fillna(df['column2'])

为什么这些方法更高效?

pandas的矢量化操作是基于C语言实现的,避免了逐行遍历的Python循环开销,当DataFrame行数超过万级时,性能差距会非常明显。

内容的提问来源于stack exchange,提问作者Mike Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:31:17