使用创建虚拟变量警察局的傻瓜在Python的for循环中

2024-03-28 16:07:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用警察局的傻瓜()对于测试和训练数据,我使用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\u dummies()不提供就地选项。你知道吗


Tags: 数据infordatagettraincolhead
0条回答
网友
1楼 · 发布于 2024-03-28 16:07:31

您需要打印dataset.head(),而不是train_data.head()。你知道吗

您可以使用此功能:

数据帧 todummy\u 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
网友
2楼 · 发布于 2024-03-28 16:07:31

出于引用目的,我将使用dict:

创建培训和测试字典:

combine={'train_data':train_data,'test_data':test_data}

使用以下代码,使用dict理解:

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

相关问题 更多 >