You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行优雅代码将pandas分类列拆分为布尔值列?

回答

当然有办法实现你的需求!Pandas提供了非常优雅的工具来处理这种分类列转布尔/数值列的场景,也就是独热编码(One-Hot Encoding),完全可以一行代码搞定你的具体需求。

针对你给出的DataFrame场景,一行实现的代码如下:

df2 = pd.get_dummies(df['A'], prefix='', prefix_sep='').astype(int)

如果希望保留原列"A",可以改成:

df_with_original = pd.get_dummies(df, columns=['A'], prefix='', prefix_sep='').astype(int)

代码解释:

  • pd.get_dummies() 是Pandas专门用于生成独热编码的函数,它会自动识别列中的所有类别,为每个类别创建新列;
  • prefix='' 和 prefix_sep='' 用来去掉默认的列名前缀(比如默认会生成"A_0"这种列名),让新列名直接是类别值0、1、2;
  • astype(int) 把函数默认生成的布尔值(True/False)转换成你需要的整数0和1,和目标df2的格式完全匹配。

举个实际运行的例子:
输入你的原始df:

A
0  1
1  2
2  1
3  2
4  2
5  2
6  0
7  1
8  0

运行第一行代码后得到的df2就是:

0  1  2
0  0  1  0
1  0  0  1
2  0  1  0
3  0  0  1
4  0  0  1
5  0  0  1
6  1  0  0
7  0  1  0
8  1  0  0

完全符合你想要的结果,而且比手动写apply函数简洁高效得多,尤其是当类别数量较多时,这个方法的优势会更明显。

内容的提问来源于stack exchange,提问作者George Pamfilis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:10:24