2015-10-07 2 views
1

У меня есть dataframe вроде этого:Объединение столбцов на основе группы

  POLY_KEY_I  SP1  SP2 
0 FS01080100SM001 POAPRA TOXRYD 
1 FS01080100SM001  NaN  NaN 
2 FS01080100SM001 OXRYD SYMOCC 
3 FS01080100SM001 EUPESU POAPRA 
4 FS01080100SM001 BOUGRA KOEPYR 
5 FS01080100SM002 POAPRA EUPESU 
6 FS01080100SM002 POAPRA  NaN 
7 FS01080100SM002 POAPRA KOEPYR 

И я хочу GroupBy POLY_KEY_I, а затем объединить SP1 и SP2 на этом основании.

Мой желаемый результат будет что-то вроде:

  POLY_KEY_I  SP 
0 FS01080100SM001 POAPRA 
1 FS01080100SM001 TOXRYD 
2 FS01080100SM001  NaN 
3 FS01080100SM001  NaN 
4 FS01080100SM001 OXRYD 
5 FS01080100SM001 SYMOCC 
6 FS01080100SM001 EUPESU 
7 FS01080100SM001 POAPRA 
8 FS01080100SM001 BOUGRA 
9 FS01080100SM001 KOEPYR 
10 FS01080100SM002 POAPRA 
11 FS01080100SM002 EUPESU 
12 FS01080100SM002 POAPRA 
13 FS01080100SM002  NaN 
14 FS01080100SM002 POAPRA 
15 FS01080100SM002 KOEPYR 

ответ

2

Вы можете использовать melt перекроить от широкоугольного до тех пор, как это:

In [10]: pd.melt(df, id_vars='POLY_KEY_I', value_name='SP') 
Out[10]: 
     POLY_KEY_I variable  SP 
0 FS01080100SM001  SP1 POAPRA 
1 FS01080100SM001  SP1  NaN 
2 FS01080100SM001  SP1 OXRYD 
3 FS01080100SM001  SP1 EUPESU 
4 FS01080100SM001  SP1 BOUGRA 
5 FS01080100SM002  SP1 POAPRA 
6 FS01080100SM002  SP1 POAPRA 
7 FS01080100SM002  SP1 POAPRA 
8 FS01080100SM001  SP2 TOXRYD 
9 FS01080100SM001  SP2  NaN 
10 FS01080100SM001  SP2 SYMOCC 
11 FS01080100SM001  SP2 POAPRA 
12 FS01080100SM001  SP2 KOEPYR 
13 FS01080100SM002  SP2 EUPESU 
14 FS01080100SM002  SP2  NaN 
15 FS01080100SM002  SP2 KOEPYR 
+0

Я бы падение 'столбец variable' – Leb

+0

действительно болен необходимость что для присоединения позже –

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