Skip to main content
 首页 » 编程设计

python之如何将带有重复文本的 CSV 列拆分为每个可能的文本变体的 0-1 列

2025年05月04日15kenshinobiy

我有一个 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