2017-10-21 99 views
0

非常感谢您的任何意见!如何将一列项目列表映射到分组类别

我想将数据框中的一列列表映射到分组类别。

更具体地说,我的名单列会是什么样子:

List    
"item1|item2" 
"item3|item2" 
"item1|item3" 

另外我还有一个分组类别数据帧:

Category Item 
C1   item1 
C1   item3 
C2   item2 
C2   item4 

我想创建原数据帧新的列(列表),使其变成如下:

List    Categories C1 C2 C3 C4  
"item1|item2" C1   TRUE 
"item3|item2" C1, C2  TRUE TRUE 
"item1|item3" C1, C2  TRUE TRUE 
+0

物品1 | ITEM2它应该是C1,C2和物品1 |项目3至C1? – Wen

回答

0
df['Categories']=df['List'].replace(df1.set_index('Item').T.to_dict('r')[0],regex=True) 

df=pd.concat([df,df.Categories.str.get_dummies('|').eq(1)],axis=1).replace({False:''}) 

df.Categories=df.Categories.str.split('|').apply(lambda x : ','.join(set(x))) 
df 
Out[194]: 
      List Categories C1 C2 
0 item1|item2  C1,C2 True True 
1 item3|item2  C1,C2 True True 
2 item1|item3   C1 True 

PS:如果你想添加这些None

mis=['C3','C4'] 
d = dict.fromkeys(mis, '') 
df.assign(**d) 
+0

你确定结果? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ哈哈,忽视,让我与我核实 – Wen

+0

感谢您的快速回复,我不会有机会测试,直到明天 - 会让你知道! – wingsoficarus116

相关问题