我在pandas
中创建了一个非常大的数据框,类似于以下内容:
0 1
user
0 product4 product0
1 product3 product1
我想使用诸如
pd.get_dummies()
之类的东西,使最终的df
类似于: product0 product1 product2 product3 product4
user
0 1 0 0 0 1
1 0 1 0 1 0
而不是从
pd.get_dummies()
获取以下内容: 0_product3 0_product4 1_product0 1_product1
user
0 0 1 1 0
1 1 0 0 1
总而言之,我不希望将行合并为二进制列。
非常感谢!
最佳答案
将reindex
与get_dummies
一起使用
In [539]: dff = pd.get_dummies(df, prefix='', prefix_sep='')
In [540]: s = dff.columns.str[-1].astype(int)
In [541]: cols = 'product' + pd.RangeIndex(s.min(), s.max()+1).astype(str)
In [542]: dff.reindex(columns=cols, fill_value=0)
Out[542]:
product0 product1 product2 product3 product4
user
0 1 0 0 0 1
1 0 1 0 1 0