我有一个 CSV,其中包含一列
LABEL
a
b
a
a
c
n o
ye s
我想把它分成这样的东西:
LABEL_a LABEL_b LABEL_c LABEL_n_o LABEL_ye_s
1 0 0 0 0
0 1 0 0 0
1 0 0 0 0
1 0 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
如何用 pandas 做这样的事情?
请您参考如下方法:
让我们使用带有参数 prefix 的 pd.get_dummmies:
#Using @Lambda setup
label = ["a", "b", "a", "a", "c", "n o", "ye s"]
s = pd.Series(label)
pd.get_dummies(s, prefix='label')
输出:
label_a label_b label_c label_n o label_ye s
0 1 0 0 0 0
1 0 1 0 0 0
2 1 0 0 0 0
3 1 0 0 0 0
4 0 0 1 0 0
5 0 0 0 1 0
6 0 0 0 0 1
时间:
for keys 循环方法
> %%timeit for key in keys:
> df[("label_%s" % key).replace(" ", "_")] = (s == key).astype(int)
100 loops, best of 3: 6.7 ms per loop
字符串访问器 get_dummies 方法
> %timeit s.str.get_dummies().add_prefix('label_')
100 loops, best of 3: 6.03 ms per loop
带前缀参数的 pd.get_dummies:
> %timeit pd.get_dummies(s, prefix='label')
1000 loops, best of 3: 1.77 ms per loop
