Python 将一个热编码与多个相似列合并

Python 将一个热编码与多个相似列合并,python,pandas,Python,Pandas,我在数据集中有几个“条件”列。这些列都有资格接收相同的编码输入。这只是为了允许多个条件与单个记录相关联——代码最后出现的列没有任何意义 在下面的示例中,在3个条件列中只有5个唯一值,尽管如果分别考虑每个列,则每个都有3个唯一值。因此,当我将一个热编码应用于这些变量时,我得到了9个新列,但我只需要5个(一个用于集合列中的每个唯一值) 以下是原始数据的示例: | cond1 | cond2 | cond3 | target | |-------|-------|-------|--------| |

我在数据集中有几个“条件”列。这些列都有资格接收相同的编码输入。这只是为了允许多个条件与单个记录相关联——代码最后出现的列没有任何意义

在下面的示例中,在3个条件列中只有5个唯一值,尽管如果分别考虑每个列,则每个都有3个唯一值。因此,当我将一个热编码应用于这些变量时,我得到了9个新列,但我只需要5个(一个用于集合列中的每个唯一值)

以下是原始数据的示例:

| cond1 | cond2 | cond3 | target |
|-------|-------|-------|--------|
| I219  | E119  | I48   | 1      |
| I500  |       |       | 0      |
| I48   | I500  | F171  | 1      |
| I219  | E119  | I500  | 0      |
| I219  | I48   |       | 0      |
以下是我尝试过的:

import pandas as pd
df = pd.read_csv('micro.csv', dtype='object')
df['cond1'] = pd.Categorical(df['cond1'])
df['cond2'] = pd.Categorical(df['cond2'])
df['cond3'] = pd.Categorical(df['cond3'])

dummies = pd.get_dummies(df[['cond1', 'cond2', 'cond3']], prefix = 'cond')
dummies
这给了我:

| cond_I219 | cond_I48 | cond_I500 | cond_E119 | cond_I48 | cond_I500 | cond_F171 | cond_I48 | cond_I500 |
|-----------|----------|-----------|-----------|----------|-----------|-----------|----------|-----------|
| 1         | 0        | 0         | 1         | 0        | 0         | 0         | 1        | 0         |
| 0         | 0        | 1         | 0         | 0        | 0         | 0         | 0        | 0         |
| 0         | 1        | 0         | 0         | 0        | 1         | 1         | 0        | 0         |
| 1         | 0        | 0         | 1         | 0        | 0         | 0         | 0        | 1         |
| 1         | 0        | 0         | 0         | 1        | 0         | 0         | 0        | 0         |
因此,对于出现在多个列(I48和I500)中的任何代码,我都有多个编码列。。我希望每个代码只包含一列,这样我就可以检查各个代码和目标变量之间的相关性

有办法做到这一点吗?这就是我想要的结果:

| cond_I219 | cond_I48 | cond_I500 | cond_E119 | cond_F171 |
|-----------|----------|-----------|-----------|-----------|
| 1         | 1        | 0         | 1         | 0         |
| 0         | 0        | 1         | 0         | 0         |
| 0         | 1        | 1         | 0         | 1         |
| 1         | 0        | 1         | 1         | 0         |
| 1         | 1        | 0         | 0         | 0         |

如果需要,在输出中获取
max
1
0
数据:

dfDummies = dummies.max(axis=1, level=0)
如果需要计数
1
值,则使用
sum

dfDummies = dummies.sum(axis=1, level=0)

谢谢你,这很好用!尽管我认为您打算在右侧使用“dummies”:dfDummies=dummies.max(axis=1,level=0)