python - get_dummies 分割字符

标签 python pandas one-hot-encoding

我有需要应用 one-hot-encoding 的标记数据:'786.2''ICD-9-CM|786.2'' ICD-9-CM''786.2b|V13.02''V13.02''279.12' , 'ICD-9-CM|V42.81' 是标签。 | 表示文档同时有 2 个标签。所以我写了这样的代码:

labels = np.asarray(label_docs)

labels = np.array([u'786.2', u'ICD-9-CM|786.2', u'|ICD-9-CM', u'786.2b|V13.02', u'V13.02', u'279.12', u'ICD-9-CM|V42.81|'])

df = pd.DataFrame(labels, columns=['label'])
labels = df['label'].str.get_dummies(sep='|')

结果:

279.12  786.2  786.2b  ICD-9-CM  V13.02  V42.81
0       0      1       0         0       0       0
1       0      1       0         1       0       0
2       0      0       0         1       0       0
3       0      0       1         0       1       0
4       0      0       0         0       1       0
5       1      0       0         0       0       0
6       0      0       0         1       0       1

但是,现在我只需要每个文档有 1 个标签:

'ICD-9-CM|786.2''ICD-9-CM'

“ICD-9-CM|V42.81|”“ICD-9-CM”

我怎样才能像这样通过 get_dummies 进行分离?

最佳答案

我认为你需要str.stripstr.split然后通过 str[0] 选择列表的第一项:

print (df.label.str.strip('|').str.split('|').str[0])
0       786.2
1    ICD-9-CM
2    ICD-9-CM
3      786.2b
4      V13.02
5      279.12
6    ICD-9-CM
Name: label, dtype: object

labels = df.label.str.strip('|').str.split('|').str[0].str.get_dummies()
print (labels)
   279.12  786.2  786.2b  ICD-9-CM  V13.02
0       0      1       0         0       0
1       0      0       0         1       0
2       0      0       0         1       0
3       0      0       1         0       0
4       0      0       0         0       1
5       1      0       0         0       0
6       0      0       0         1       0

如果索引为 2 的行不需要值,则删除 str.strip:

print (df.label.str.split('|').str[0])
0       786.2
1    ICD-9-CM
2            
3      786.2b
4      V13.02
5      279.12
6    ICD-9-CM
Name: label, dtype: object

labels = df.label.str.split('|').str[0].str.get_dummies(sep='|')
print (labels)

   279.12  786.2  786.2b  ICD-9-CM  V13.02
0       0      1       0         0       0
1       0      0       0         1       0
2       0      0       0         0       0
3       0      0       1         0       0
4       0      0       0         0       1
5       1      0       0         0       0
6       0      0       0         1       0

关于python - get_dummies 分割字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39483546/

相关文章:

python - matplotlib hist2d 图中颜色条的设置范围

Python:While 循环,在不同条件下执行相同的代码。优雅与架空

python - Pandas:对 DataFrame 的每一列进行 nansum 系列

python - 如何将 csv 转换为嵌套 json

pandas - 如何将多个 Pandas 数据帧连接到一个大于内存的 dask 数据帧?

python - 如何将handle_unknown ='ignore'传递给sklearn训练好的one hot编码器?

Pandas 按一个热编码列分组

python - 无法启动 jupyter notebook

machine-learning - 如何为泰坦尼克号数据集定义 oneHotEncoder

python - 将 numpy 数组转换为十六进制字节数组