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?
答案 0 :(得分:4)
另一种解决方案是使用pd.get_dummies
。在您的情况下,如果已存在x
,y
和z
列,您可以执行以下操作:
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
列,您可以执行以下操作,这意味着如果您还有除x
,y
和z
之外的任何其他值,则会创建新的"假"他们的列也是:
df = pd.concat([df, pd.get_dummies(df.other)], axis=1)
这会导致您的案例中的最终数据框相同