以下是我要做的:
Dataframe before:
name value apply_f
0 SEBASTIEN 9 false
1 JOHN 4 false
2 JENNY np.inf true
Apply function f: len(df['name']) to columns 'value' only if columns 'apply_f' == True
Dataframe after:
name value apply_f
0 SEBASTIEN 9 False
1 JOHN 4 False
2 JENNY 5 True
以下是我目前的情况:
^{pr2}$但结果并不是我所期望的:
apply_f name value
0 False SEBASTIEN NaN
1 False JOHN NaN
2 True JENNY 5
该列将初始值替换为NaN
它覆盖的原因是因为左侧的索引默认为整个数据帧,如果您同时使用
loc
将掩码应用到左侧,则它只影响满足条件的行:上面使用
^{pr2}$loc
是因为我使用了相同的布尔掩码语义,这可能有用,也可能不起作用,在最新的pandas版本中会引发一个错误:对于您正在做的事情,使用numpy
where
将更加简洁易读:我知道您的示例是为了演示一个问题,但是您也可以在某些情况下使用
where
。在相关问题 更多 >
编程相关推荐