繁体   English   中英

在 Python 的 for 循环中使用 pd.get_dummies 创建虚拟变量

[英]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.

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