我在一个数据集中有几个“condition”列。这些列都有资格接收相同的编码输入。这只允许多个条件与一个记录相关联—代码最后进入的列没有任何意义。你知道吗
在下面的示例中,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 |
如果需要输出中的
1
和0
数据,则获取max
值:或者使用
sum
如果需要计数1
值:相关问题 更多 >
编程相关推荐