1

我是 Python 新手。我使用 pandas get_dummies 在分类列上创建了虚拟列。如何在序数列上创建虚拟列(例如列 Rating 的值为 1、2、3 ...、10)

4

1 回答 1

2

考虑数据框df

df = pd.DataFrame(dict(Cats=list('abcdcba'), Ords=[3, 2, 1, 0, 1, 2, 3]))
df

  Cats  Ords
0    a     3
1    b     2
2    c     1
3    d     0
4    c     1
5    b     2
6    a     3

pd.get_dummies
在任一列上的工作方式
相同df.Cats

pd.get_dummies(df.Cats)

   a  b  c  d
0  1  0  0  0
1  0  1  0  0
2  0  0  1  0
3  0  0  0  1
4  0  0  1  0
5  0  1  0  0
6  1  0  0  0

df.Ords

   0  1  2  3
0  0  0  0  1
1  0  0  1  0
2  0  1  0  0
3  1  0  0  0
4  0  1  0  0
5  0  0  1  0
6  0  0  0  1

pd.get_dummies(df)

   Ords  Cats_a  Cats_b  Cats_c  Cats_d
0     3       1       0       0       0
1     2       0       1       0       0
2     1       0       0       1       0
3     0       0       0       0       1
4     1       0       0       1       0
5     2       0       1       0       0
6     3       1       0       0       0

请注意,它分裂Cats但没有Ords

让我们通过添加另一Cats2列并调用pd.get_dummies

pd.get_dummies(df.assign(Cats2=df.Cats)))

   Ords  Cats_a  Cats_b  Cats_c  Cats_d  Cats2_a  Cats2_b  Cats2_c  Cats2_d
0     3       1       0       0       0        1        0        0        0
1     2       0       1       0       0        0        1        0        0
2     1       0       0       1       0        0        0        1        0
3     0       0       0       0       1        0        0        0        1
4     1       0       0       1       0        0        0        1        0
5     2       0       1       0       0        0        1        0        0
6     3       1       0       0       0        1        0        0        0

有趣的是,它拆分了两object列,但不拆分数字列。

于 2017-03-24T20:50:25.250 回答