繁体   English   中英

为列创建虚拟编码列并将其连接到数据集

[英]Create dummy coded columns for a column and concatenate it to the dataset

我正在处理有关手机流失率的数据集。 我正在尝试为形状为 3333 行 × 20 列的数据集中的状态缩写列创建虚拟代码。 我需要省略状态虚拟编码列之一作为“参考”列用于建模。 我认为应该发生的是,应该为每一行创建一个列,并在与新创建的虚拟列对应的行中放置一个 1。 我目前在每一行中都得到 0,除了第一行全是 1。 我需要以某种方式获取虚拟变量以在每行的适当列中包含一个标记。 我还认为我应该将列合并为唯一的列(在这种情况下,每个州都有一个),但我不确定这是否会与虚拟编码的点混淆?

我目前有以下代码:

1. 为 'state' 创建虚拟变量并排除第一个虚拟列:

churn_dummies = pd.get_dummies(churn, columns='state', prefix='st').iloc[:,20:]

这将返回一个 3333x3332 的数据帧。
churn_dummies 数据框的屏幕截图可以在这里找到。

st_OH   st_NJ   st_OH   st_OK   st_AL   st_MA   st_MO   st_LA   st_WV   st_IN   st_RI
0   1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

这个结果似乎在创建的整个巨大数据帧中继续存在,从抽查来看,这些行似乎不包含用相应列标记的适当 1。 我一直在使用以下熊猫文档: https : //pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html

2. 然后将列连接到数据帧上:

churn = pd.concat([churn, churn_dummies], axis=1)

我想通了这个问题。 输入列参数时,引用的列名称需要在名称 ['state'] 周围加上方括号,以便对该列调用 get_dummies 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM