我有一个表,该表的列为每行报告一个标签。 如何为每个标签创建一列,并向包含标签的每一列添加一个布尔值?
这是我在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])
答案 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()