如何在Pandas中对多列批量应用重编码规则并排除指定列
实现方案
首先筛选需要处理的目标列,两种筛选逻辑可选:
- 排除指定列(符合你要求的「除Name和Year外所有列」需求):
target_cols = [col for col in Table.columns if col not in ['Name', 'Year']]
- 仅匹配V开头的列(更精准,避免后续新增其他非V列被误处理):
target_cols = [col for col in Table.columns if col.startswith('V')]
推荐方案:向量化运算(性能最优,代码最简)
直接对所有目标列批量做判断转整数,完全匹配你的重编码规则:
- 如果直接覆盖原列:
Table[target_cols] = (Table[target_cols] >= 4).astype(int)
- 如果需要保留原列,生成带
_F后缀的新列(和你原来的单列命名习惯一致):
Table[[f"{col}_F" for col in target_cols]] = (Table[target_cols] >= 4).astype(int)
备选方案:apply批量处理(和你原有逻辑习惯一致)
如果你更习惯用apply的实现逻辑,也可以直接对目标列批量应用规则:
Table[target_cols] = Table[target_cols].apply(lambda ser: ser.map(lambda x: 0 if x <4 else 1))
内容的提问来源于stack exchange,提问作者ruedi。
相关产品推荐
相关产品推荐

