如何在Pandas中对多列应用条件替换值
批量替换DataFrame中指定前缀列的符合条件值
方法一:循环列复用原有逻辑
你已经获取了目标列集合cols,只需要遍历这些列,对每一列执行你写好的替换逻辑即可:
cols = te_matrix.filter(like='P1-').columns for col in cols: te_matrix[col] = te_matrix.apply(lambda row: row['family'] if row[col] > 0 else row[col], axis=1)
这个方式逻辑和你实现的单列代码完全一致,简单直观,适合数据量不大的场景。
方法二:向量化操作(更高效)
如果数据集较大,逐行apply的效率偏低,推荐用numpy的向量化操作批量处理,性能提升明显:
import numpy as np cols = te_matrix.filter(like='P1-').columns # 将family列转为二维数组,匹配目标列的形状 family_vals = te_matrix['family'].values[:, np.newaxis] # 批量替换所有目标列中大于0的值 te_matrix[cols] = np.where(te_matrix[cols] > 0, family_vals, te_matrix[cols])
这里利用np.where对整个目标列区域进行条件判断,一次性完成替换,避免了逐行循环的开销。
内容的提问来源于stack exchange,提问作者emor
相关产品推荐
相关产品推荐

