Python 使用现有数据帧中的值创建具有二进制值列的数据帧

Python 使用现有数据帧中的值创建具有二进制值列的数据帧,python,pandas,dataset,Python,Pandas,Dataset,我正在尝试从现有数据帧创建一个具有二进制(0或1)值的新数据帧。对于给定数据帧中的每一行,程序应从每个单元格中获取值,并为新数据帧中具有相同编号索引的行的相应列设置1 我已尝试执行以下代码段 for col in products : index = 0; for item in products.loc[col] : products_coded.ix[index, 'prod_' + str(item)] = 1; index = inde

我正在尝试从现有数据帧创建一个具有二进制(0或1)值的新数据帧。对于给定数据帧中的每一行,程序应从每个单元格中获取值,并为新数据帧中具有相同编号索引的行的相应列设置1

我已尝试执行以下代码段

for col in products :
    index = 0;
    for item in products.loc[col] :
        products_coded.ix[index, 'prod_' + str(item)] = 1;
        index = index + 1;
它适用于较少的行数。但是,对于任何大型数据集,都需要花费大量的时间。获得理想结果的最佳方法是什么。

我认为您需要:

  • 首先将值强制转换为
    string
    s
  • 按列名称聚合
    max
  • 要正确排序,请将列转换为
    int
  • 对于排序和追加缺少的列,将
    NaN
    s替换为
    0
    by parameter
    fill_value=0
    并删除第一列
    0
  • 用于重命名列

另一个类似的解决方案:

df1 = (pd.get_dummies(df.astype(str), prefix='', prefix_sep='')
         .max(level=0, axis=1))

df1.columns = df1.columns.astype(int)    

df1 = (df1.reindex(columns=range(1, df1.columns.max() + 1), fill_value=0)
          .add_prefix('prod_'))

我得到了以下错误:TypeError:reindex()得到了一个意外的关键字参数“axis”,它是熊猫的旧版本,只需要
。reindex(columns=range(1,df1.columns.max()+1),fill_value=0)
。reindex(range(1,df1.columns.max()+1),axis=1,fill_value=0)
df1 = (pd.get_dummies(df.astype(str), prefix='', prefix_sep='')
         .max(level=0, axis=1))

df1.columns = df1.columns.astype(int)    

df1 = (df1.reindex(columns=range(1, df1.columns.max() + 1), fill_value=0)
          .add_prefix('prod_'))