Pandas基于多列生成剔除NaN的列表型新列的简洁一行实现方法问询
精简版Pandas列生成实现
替换原有冗余逻辑的一行式pandonic写法如下:
df['c'] = df[['c1', 'c2']].apply(lambda row: row.dropna().tolist(), axis=1)
实现说明:
- 跳过原有代码中手动转列表、逐元素判断空值的冗余流程,直接调用Pandas Series原生的
dropna()方法完成空值过滤,语法更简洁直观 - 空值判断逻辑基于Pandas官方实现,规避了手动使用
i is not np.nan可能出现的判断偏差,鲁棒性更强 - 代码全程是单步赋值流程,不存在中间临时覆盖列的冗余操作;后续需要扩展参与合并的列时,仅需调整
apply作用的列切片范围即可,无需改动内部过滤逻辑
内容的提问来源于stack exchange,提问作者Quant Christo
相关产品推荐
相关产品推荐

