在Python的Numpy与Pandas中基于贷款表字段创建布尔值新表
实现方法
最简洁的方式是用Pandas的get_dummies函数,它专门用来生成类别特征的独热编码(即你需要的1/0标记),步骤如下:
1. 准备原始数据
先还原你提供的贷款表:
import pandas as pd data = { '# LOAN': ['Loan 1', 'Loan 2', 'Loan 3', 'Loan 4', 'Loan 5', 'Loan 6'], 'SECTOR': ['food', 'telecom', 'auto', 'food', 'telecom', 'auto'], 'COUNTRY': ['germany', 'italy', 'japan', 'japan', 'germany', 'italy'] } df = pd.DataFrame(data)
2. 生成独热编码并合并表格
直接对SECTOR和COUNTRY列应用get_dummies,再和原表的贷款编号列合并,最后清理列名前缀:
# 生成行业和国家的独热编码 dummies = pd.get_dummies(df[['SECTOR', 'COUNTRY']]) # 合并贷款编号列与独热编码列 result = pd.concat([df['# LOAN'], dummies], axis=1) # 移除列名前缀,匹配目标表格格式 result.columns = ['# LOAN'] + [col.split('_')[1] for col in dummies.columns] print(result)
运行结果
执行代码后会直接输出你需要的目标表格:
| # LOAN | food | telecom | auto | germany | italy | japan |
|---|---|---|---|---|---|---|
| Loan 1 | 1 | 0 | 0 | 1 | 0 | 0 |
| Loan 2 | 0 | 1 | 0 | 0 | 1 | 0 |
| Loan 3 | 0 | 0 | 1 | 0 | 0 | 1 |
| Loan 4 | 1 | 0 | 0 | 0 | 0 | 1 |
| Loan 5 | 0 | 1 | 0 | 1 | 0 | 0 |
| Loan 6 | 0 | 0 | 1 | 0 | 1 | 0 |
为什么不用pivot_table?
pivot_table虽然也能实现,但需要额外设置aggfunc='size'并填充空值为0,步骤比get_dummies繁琐。get_dummies是Pandas专为类别特征转独热编码设计的工具,完全匹配你的需求,代码更简洁高效。
内容的提问来源于stack exchange,提问作者Nassir Bin
相关产品推荐
相关产品推荐

