熊猫对一栏进行分类

时间:2018-05-02 14:36:09

标签: python pandas

    other    x    y    z
1       x  NaN  NaN  NaN
21      z  NaN  NaN  NaN
71      y  NaN  NaN  NaN
2       x  NaN  NaN  NaN
22      z  NaN  NaN  NaN
72      y  NaN  NaN  NaN
3       x  NaN  NaN  NaN
23      z  NaN  NaN  NaN
73      y  NaN  NaN  NaN
60      x  NaN  NaN  NaN
90      z  NaN  NaN  NaN
80      y  NaN  NaN  NaN
91      z  NaN  NaN  NaN
64      x  NaN  NaN  NaN
64      y  NaN  NaN  NaN
155     x  NaN  NaN  NaN
165     y  NaN  NaN  NaN

如何将'other'set 1的每个条目设置为相应的列,其余的为0?

1 个答案:

答案 0 :(得分:4)

另一种解决方案是使用pd.get_dummies。在您的情况下,如果已存在xyz列,您可以执行以下操作:

df[['x', 'y', 'z']] = pd.get_dummies(df.other)

>>> df
    other  x  y  z
1       x  1  0  0
21      z  0  0  1
71      y  0  1  0
2       x  1  0  0
22      z  0  0  1
72      y  0  1  0
3       x  1  0  0
23      z  0  0  1
73      y  0  1  0
60      x  1  0  0
90      z  0  0  1
80      y  0  1  0
91      z  0  0  1
64      x  1  0  0
64      y  0  1  0
155     x  1  0  0
165     y  0  1  0

关于这一点的一个好处是你不必事先准备好x y z专栏(如果你没有这些专栏)已经)。假设您的数据框只是您的other列,您可以执行以下操作,这意味着如果您还有除xyz之外的任何其他值,则会创建新的"假"他们的列也是:

df = pd.concat([df, pd.get_dummies(df.other)], axis=1)

这会导致您的案例中的最终数据框相同