pandas中将多分类tag列转换为二分类列的简便实现方法
实现方法
你可以直接用numpy.where实现,这是最简洁高效的方案,不需要提前构建完整映射字典,一行代码就能搞定:
import numpy as np df['tag_binary'] = np.where(df['tag'] == 'pandas', 'pandas', 'non_pandas')
如果不想额外引入numpy,也可以用pandas自带的map搭配匿名函数实现:
df['tag_binary'] = df['tag'].map(lambda x: 'pandas' if x == 'pandas' else 'non_pandas')
还有一种更贴合pandas原生逻辑的写法,用Series.replace配合布尔判断:
df['tag_binary'] = (df['tag'] == 'pandas').replace({True: 'pandas', False: 'non_pandas'})
方案对比
- 优先推荐
numpy.where方案,数据量较大时性能远高于map/apply类方案,逻辑也更清晰易懂 - 如果你的场景中后续可能扩展判断规则,匿名函数的方案后续修改条件会更灵活
内容的提问来源于stack exchange,提问作者Danish
相关产品推荐
相关产品推荐

