![](/img/trans.png)
[英]How to make dummy coding (pd.get_dummies()) only for categories which share in nominal variables is at least 40% in Python Pandas?
[英]Creating dummy variables using pd.get_dummies in a for loop in Python
我想使用pd.get_dummies()将特定的分类变量转换为虚拟变量,用于测试和训练数据,因此我使用了 for 循环,而不是分别对两者进行操作。 但是,以下代码不起作用并且.head()返回相同的数据集。
combine = [train_data, test_data]
for dataset in combine:
dummy_col = pd.get_dummies(dataset['targeted_sex'])
dataset = pd.concat([dataset, dummy_col], axis = 1)
dataset.drop('targeted_sex', axis = 1, inplace = True)
train_data.head() # does not change
即使我使用像这样遍历索引的迭代器,它仍然不起作用。
for i in range(len(combine)):
我能得到一些帮助吗? 此外,Pandas get_dummies() 不提供就地选项。
出于参考目的,我将使用字典:
创建一个训练和测试字典:
combine={'train_data':train_data,'test_data':test_data}
使用这个使用字典理解的代码:
new_combine={k:pd.concat([dataset, pd.get_dummies(dataset['targeted_sex'])], axis = 1)
.drop('targeted_sex',1) for k,dataset in combine.items()}
现在通过参考键打印测试和训练:
print(new_combine['train_data']) #same for test
您需要打印dataset.head()
而不是train_data.head()
。
您可以使用此功能:
df: dataframe todummy_list: 列名列表
def dummy_df(df, todummy_list):
for x in todummy_list:
dummies = pd.get_dummies(df[x], prefix=x, dummy_na=False)
df = df.drop(x, 1)
df = pd.concat([df, dummies], axis=1)
return df
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.