将DataFrame中仅数值型值转换为0/1二进制形式的技术咨询
Pandas DataFrame数值列二进制转换及新增分类列实现
核心思路
- 自动识别所有数值型列,将大于0的值转为1,0保持不变
- 新增
category列并插入到DataFrame首位
代码实现
import pandas as pd # 构造初始DataFrame df = pd.DataFrame({ 'summary': ['xyz', 'abc'], 'word1': [0, 32], 'word2': [56, 0] }) # 处理数值列的二进制转换 numeric_columns = df.select_dtypes(include=['number']).columns df[numeric_columns] = df[numeric_columns].gt(0).astype(int) # 添加category列到首位 df.insert(0, 'category', [f'category{i+1}' for i in df.index]) # 输出结果 print(df)
代码说明
select_dtypes(include=['number']):自动筛选所有数值类型列,无需手动指定列名,适配更多列的场景gt(0).astype(int):先判断值是否大于0(返回布尔值),再将布尔值转为整数(True→1,False→0)insert(0, ...):把生成的分类列插入到DataFrame的第一列位置,分类名称按行索引自动生成
转换后结果
| category | summary | word1 | word2 |
|---|---|---|---|
| category1 | xyz | 0 | 1 |
| category2 | abc | 1 | 0 |
内容的提问来源于stack exchange,提问作者Kas
相关产品推荐
相关产品推荐

