Python在同一列中将分类值转换为二进制的方法

时间:2016-01-19 02:41:21

标签: python-2.7 pandas scikit-learn

Gurus,我们正在寻找一种pythonic方式(python 2.7),将列中的分类值转换为二进制值为一个新列。示例:在“Loan_status”列中,

i g h f(s)

我们正试图将“Charged Off”,“Default”变为“0”,“Full Paid”,“Current”变为“1”,并删除任何包含“不符合信用政策的行。状态: 1“和”不符合信用政策。状态:0“。

期望的输出:

 Loan_Status
 Charged Off
 Default
 Fully Paid
 Current
 Does not meet the credit policy. Status:1
 Does not meet the credit policy. Status:0

有没有pythonic方法呢? Pandas get_dummies将生成多个列,因此它似乎不起作用。谢谢!

1 个答案:

答案 0 :(得分:2)

让我们定义正面和负面类别标签的列表。

positive = ['Fully Paid', 'Current']
negative = ['Charged Off', 'Default']

首先,过滤对您的模型无效的行的数据框。我们可以使用isin仅过滤

中的值
filtered_df = df[df['Loan_Status'].isin(positive + negative)].copy()

其次,为正面标签创建一个新列。如果需要01,我们可以将布尔结果转换为int类型。

filtered_df['Loan_Status'] = filtered_df['Loan_Status'].isin(positive).astype(int)