使用Pandas将字符串列转为多列布尔值的优雅实现方法
分类列转布尔值列的优雅实现方案
问题场景
给定如下原始DataFrame:
import pandas as pd df = pd.DataFrame({'my_col' : ['red', 'red', 'green']})
对应数据:
| my_col |
|---|
| red |
| red |
| green |
期望转换为包含布尔值列的DataFrame:
df2 = pd.DataFrame({'red' : [True, True, False], 'green' : [False, False, True]})
对应数据:
| red | green |
|---|---|
| True | False |
| True | False |
| False | True |
请问是否有优雅的实现方式?
实现方案
直接使用pandas内置的pd.get_dummies()方法,指定dtype=bool即可一行完成转换,这是最简洁高效的方案:
df2 = pd.get_dummies(df['my_col'], dtype=bool)
执行后得到的结果完全符合预期:
red green 0 True False 1 True False 2 False True
如果需要严格指定输出列的顺序,可以传入columns参数显式定义:
df2 = pd.get_dummies(df['my_col'], columns=['red', 'green'], dtype=bool)
不过在这个场景下,默认的排序已经满足需求,因此第一种写法足够优雅。
内容的提问来源于stack exchange,提问作者curious
相关产品推荐
相关产品推荐

