为列的每个标签创建一个具有布尔值的列

时间:2019-07-26 12:20:07

标签: python pandas dataframe

我有一个表,该表的列为每行报告一个标签。 如何为每个标签创建一列,并向包含标签的每一列添加一个布尔值?

这是我在input.csv文件中的输入表

COL1 COL2 COL3 TAG
12    13   21   a
15    23   31   b
32    33   31   a
15    53   31   a
18    26   31   c
17    63   31   d
12    25   31   a
1     93   31   a
13    25   31   a

这就是我的目标

COL1 COL2 COL3  a  b  c  d  ...
12    13   21   1  0  0  0
15    23   31   0  1  0  0 
32    33   31   1  0  0  0
15    53   31   1  0  0  0
18    26   31   0  0  1  0
17    63   31   1  0  0  1
12    25   31   1  0  0  0
1     93   31   1  0  0  0
13    25   31   1  0  0  0

我尝试使用熊猫没有成功... 这是我写的代码

import pandas

column_to_replicate='tag'

df = pandas.read_csv("data.csv")
col_names = df[column_to_replicate].dropna().unique().tolist()
df[col_names] = pd.get_dummies(df[column_to_replicate])

2 个答案:

答案 0 :(得分:1)

@ anky_91的答案有效!

df=df.join(df.pop('TAG').str.get_dummies())

答案 1 :(得分:1)

您要寻找的被称为one-hot编码。您可以将函数get_dummies用于相应的结果:

import pandas as pd
one_hot_encoded = pd.get_dummies(df['TAG'])
one_hot_encoded.head()