2016-09-08 3 views
0

У меня есть набор данных с большим количеством столбцов. Данные структурированы следующим образом:Слияние нескольких столбцов по уникальному значению

id Artist 1 Artist 2 Artist 3 
1 Red hot  
2 Wiz   Red hot 
3 Red hot  Wiz  Bronson 
4 Bronson  Bruce  Red hot 
5 Wiz   Bronson 
6 Red Hot  

И мне нужно, чтобы это было так:

id Artist 
1 Red hot  
2 Wiz  
2 Red hot  
3 Red hot  
3 Wiz  
3 Bronson  
4 Red hot 
4 Bronson  
4 bruce  
5 Wiz  
5 Bronson  
6 Red hot  

Есть простой способ сделать это в панд? Я пробовал использовать расплав из этого ответа, но это не то, что им прицелилось: pandas convert some columns into rows

thx заранее!

ответ

0

Я думаю, что вы можете использовать:

#if column `id` is not index, first set it to index 
df.set_index('id', inplace=True) 
#create multiindex from columns 
df.columns = df.columns.str.split(expand=True) 
print (df) 
    Artist     
      1  2  3 
id       
1 Red hot  NaN  NaN 
2  Wiz Red hot  NaN 
3 Red hot  Wiz Bronson 
4 Bronson Bruce Red hot 
5  Wiz Bronson  NaN 
6 Red Hot  NaN  NaN 

#reshape it 
print (df.stack().reset_index(drop=True, level=1).reset_index()) 
    id Artist 
0 1 Red hot 
1 2  Wiz 
2 2 Red hot 
3 3 Red hot 
4 3  Wiz 
5 3 Bronson 
6 4 Bronson 
7 4 Bruce 
8 4 Red hot 
9 5  Wiz 
10 5 Bronson 
11 6 Red Hot 
+0

ТНХ много! Теперь я применим это к большему файлу csv. спасибо! –

+0

Рад может вам помочь! – jezrael

Смежные вопросы