Pandas按条件创建新列:A列为空取B值否则取A值,现有代码不生效如何解决
错误原因
- 你写的
if data['A'] is None是对整个A列的Series对象做判断,只会判断这个Series本身是否为None,不会逐行校验每一个元素是否为空 - pandas里的默认空值是
NaN,和Python原生的None不是同一对象,就算逐行遍历用is None也无法识别pandas的空值,必须用pandas自带的.isna()方法做空值判断
正确实现方法
方法1:用fillna(最简洁,完全匹配你的需求)
直接调用A列的fillna方法,空值位置会自动填充B列的对应值:
data['C'] = data['A'].fillna(data['B'])
方法2:用np.where(适合后续需要扩展更复杂判断逻辑的场景)
import numpy as np data['C'] = np.where(data['A'].isna(), data['B'], data['A'])
内容的提问来源于stack exchange,提问作者Juan Gonzalez
相关产品推荐
相关产品推荐

