Python 使用现有数据帧中的值创建具有二进制值列的数据帧
我正在尝试从现有数据帧创建一个具有二进制(0或1)值的新数据帧。对于给定数据帧中的每一行,程序应从每个单元格中获取值,并为新数据帧中具有相同编号索引的行的相应列设置1 我已尝试执行以下代码段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
for col in products :
index = 0;
for item in products.loc[col] :
products_coded.ix[index, 'prod_' + str(item)] = 1;
index = index + 1;
它适用于较少的行数。但是,对于任何大型数据集,都需要花费大量的时间。获得理想结果的最佳方法是什么。我认为您需要:
- 首先将值强制转换为
sstring
- 按列名称聚合
max
- 要正确排序,请将列转换为
int
- 对于排序和追加缺少的列,将
s替换为NaN
by parameter0
并删除第一列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_'))