使用str.get_dummies
df['col'].str.get_dummies(sep=',') a b c d0 1 0 0 01 1 1 1 02 1 1 0 13 0 0 0 14 0 0 1 1
编辑:更新答案以解决一些问题。
Qn 1:为什么系列方法get_dummies不接受参数prefix = …而pandas.get_dummies()却接受它
Series.str.get_dummies是一个序列级方法(顾名思义!)。我们是一个Series(或Dataframe列)中的一种热编码值,因此不需要使用前缀。另一方面,Pandas.get_dummies可以对多个列进行热编码。在这种情况下,prefix参数将用作原始列的标识符。
如果要将前缀应用于str.get_dummies,则始终可以使用Dataframe.add_prefix
df['col'].str.get_dummies(sep=',').add_prefix('col_')问题2:如果您有不止一列,如何将假人重新合并到原始框架中?您可以使用Dataframe.concat将一个热编码列与数据框中的其余列合并。
df = pd.Dataframe({'other':['x','y','x','x','q'],'col':['a','a,b,c','a,b,d','d','c,d']})df = pd.concat([df, df['col'].str.get_dummies(sep=',')], axis = 1).drop('col', 1) other a b c d0 x 1 0 0 01 y 1 1 1 02 x 1 1 0 13 x 0 0 0 14 q 0 0 1 1


