Python 如何将数据帧中Categorica类型的所有列编码为伪变量

Python 如何将数据帧中Categorica类型的所有列编码为伪变量,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我有一个包含大量分类列的Pandas数据框架,我希望将其传递给scikit学习。由于scikit learn只接受数组作为参数,所以我需要将所有分类列转换为伪变量。例如,我有一个包含类别“Christian”、“Muslim”和“Hindu”的宗教列,这些类别应转换为三个虚拟变量,并根据这些值设置为0或1 我找到的最好的解决方案是将数据帧分成分类变量和非分类变量,然后在所有分类变量上使用pandas.get_假人,然后重新组合 有更快的方法吗?您可以获取数据帧(df)并将其与要转换的列列表一起传

我有一个包含大量分类列的Pandas数据框架,我希望将其传递给scikit学习。由于scikit learn只接受数组作为参数,所以我需要将所有分类列转换为伪变量。例如,我有一个包含类别“Christian”、“Muslim”和“Hindu”的宗教列,这些类别应转换为三个虚拟变量,并根据这些值设置为0或1

我找到的最好的解决方案是将数据帧分成分类变量和非分类变量,然后在所有分类变量上使用pandas.get_假人,然后重新组合


有更快的方法吗?

您可以获取数据帧(df)并将其与要转换的列列表一起传递给get_dummies()调用

假设您有一个带有一串列的df,并且您希望仅从“宗教”列创建虚拟变量

以下是df的外观:

   Age     Name   Religion State
0   28     Adam  Christian    CA
1   25     Brad      Hindu    CA
2   35  Charlie     Muslim    AZ
3   24    David      Hindu    NV
4   39     Eric  Christian    OR
要创建“宗教”列的虚拟变量,请执行以下操作:

输出:

   Age     Name State  Religion_Christian  Religion_Hindu  Religion_Muslim
0   28     Adam    CA                   1               0                0
1   25     Brad    CA                   0               1                0
2   35  Charlie    AZ                   0               0                1
3   24    David    NV                   0               1                0
4   39     Eric    OR                   1               0                0
df = pd.get_dummies(df, columns=['Religion'])
   Age     Name State  Religion_Christian  Religion_Hindu  Religion_Muslim
0   28     Adam    CA                   1               0                0
1   25     Brad    CA                   0               1                0
2   35  Charlie    AZ                   0               0                1
3   24    David    NV                   0               1                0
4   39     Eric    OR                   1               0                0