如何在Pandas Dataframe中将类别Categorica的所有列编码为Dummy变量

时间:2015-11-01 20:50:16

标签: python pandas scikit-learn

我有一个Pandas数据框,其中包含大量分类列,我希望将其传递给scikit-learn。由于scikit-learn只接受数组作为参数,我需要将所有分类列转换为虚拟变量。例如,我有一个宗教专栏,其类别为“基督徒”,“穆斯林”和“印度教”,应根据这些值转换为三个虚拟变量,设置为0或1。

我发现的最佳解决方案是将数据帧拆分为分类变量和非分类变量,然后在所有分类变量上使用pandas.get_dummies,然后重新组合。

有更快的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以获取数据框(df)并将其传递给get_dummies()调用以及您要转换的列列表。

让我们假设你有一堆带有一些列的df,你只想从" Religion"创建虚拟变量。列。

df = pd.DataFrame({'Name': ['Adam', 'Brad', 'Charlie', 'David','Eric'],
                   'Religion': ['Christian', 'Hindu', 'Muslim','Hindu','Christian'],
                   'Age': [28, 25, 35, 24, 39,],
                   'State':['CA','CA','AZ','NV','OR']})

这是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

创建"宗教"的虚拟变量。柱:

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